celeryd開発では、Django開発サーバーだけでなく実行するのも少し面倒です。celeryたとえば、開発中にタスクを同期的に実行するように依頼することは可能ですか?または同様の何か?
4 に答える
はい、設定で設定することでこれを行うことができCELERY_TASK_ALWAYS_EAGER = Trueます。
(以前は定数と呼ばれていましたCELERY_ALWAYS_EAGER)
http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-execution-settings
django-celeryには、CELERY_ALWAYS_EAGERを支援するカスタムDjangoテストランナーもあります。ドキュメントでCeleryをDjangoで使用する方法の詳細をご覧ください。
4.0セロリのバージョンでは、設定はDjangoまたはネイティブでCELERY_ALWAYS_EAGERに置き換えられました。CELERY_TASK_ALWAYS_EAGERsettings.pytask_always_eagercelery conf
バージョン3.xから4.xへのセロリ構成の多数の変更は多くの行に分散しているため、組み込みの設定移行ツールを使用することをお勧めします。
celery upgrade settings --django
ソース:
幸い、セロリのアップグレード設定--djangoプログラムが正しいことを行うため、ファイルを手動で変更する必要はありません。
http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#step-4-upgrade-to-celery-4-0
Celeryタスクを5年以上作成した後、テストと開発の容易さを支援するために開発したパターンに気付きました。Celeryタスクは、通常myproject.implパッケージに入れる通常のPython関数の薄いラッパーである方がはるかに優れていることに気付きました。 。Celeryタスクには、たとえば分散ロックの使用、明示的な再試行ロジックなど、Celeryに厳密に関連するロジックが含まれている場合があります。