この2つの部分をドッキングして使用するために、DjangoからCeleryを切り離すための最良の方法は何だろうかと思います。 港湾労働者集団サービス?通常、Djangoアプリケーションを参照するコマンドを使用して、セロリワーカーとセロリビートを起動します。
celery worker -A my_app
celery beat -A my_app
このことから、私はceleryが設定情報を拾っていると思います設定ファイルとcelery.pyファイルからマイクロサービスに移動するのは簡単です。タスクがDjango ORMをどのように利用するかについて完全に理解していないのでしょうか?それとも、マイクロサービスマントラとCeleryが、タスクを完了するために必要なデータに対してDjango RESTフレームワークAPIに対してGET / POST呼び出しを行うように設計すべきではありません?
回答:
回答№1は1私はdjangoアプリとそのceleryワーカーの両方のためのコードが同じであるセットアップを使います(単一のリポジトリのように)。
デプロイするときは、ORMなどでの驚きを避けるために、どこにでも同じコードをリリースするようにしてください。
Celery
それはモデルなどへのアクセスを持っているように、djangoアプリへの参照から始まります...
ワーカーとメインアプリ間の通信は、メッセージングキュー(またはrabbitmq
または redis
...)またはデータベースを介して(のように、celeryワーカーはモデルなどを知っているので、dbで直接作業します)
それがマイクロサービスのマントラに従っているかどうかはわかりませんが、うまくいきます:)