DJANGO アプリケーションでセロリを使用すると問題が発生します。タスクにエラーがあると、タスクはループに入り、タスクを終了する代わりに再度開始します。私のタスクはデータベースからストアド プロシージャを実行します。ストアド プロシージャでは、エラーが発生した場合に電子メールを送信し、ストアド プロシージャを終了します。
並行性が異なる 2 人のワーカーがいます
celery multi start carga_w conc_w -A provcon -Q:conc_w conc -Q:carga_w carga -l info -c:conc_w 1 -c:carga_w 3 -E
仕事:
@task(queue='conc')
def conci(idprov,pfecha):
conci = Buscar_Conci()
spconc = conci.buscarcon(idprov,pfecha)
return None
タスクを消去しようとしても機能せず、タスクはメモリに保持されます。タスクをパージするには、次のコマンドを使用します。
celery -A provcon purge -f
DJANGO で Celery を使用するのは初めてで、何かを見逃しているのか、設定が間違っているのかわかりません。
BROKER_URL = 'redis://localhost:6379/0'
CELERY_IMPORTS = ("pc.tasks", )
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_RESULT_BACKEND='djcelery.backends.cache:CacheBackend'
そのループに入ったときにタスクを強制終了するには、django-admin サイトから、または celery purge コマンドを使用して停止できないため、データベースからタスクを強制終了する必要があります
エラーが発生したときにそのループに入らないようにするためのアドバイス
前もって感謝します