0
を実行していない、及びセロリのように設定されている:私は2つのタスクがtasks.py
で定義したジャンゴ+セロリ私はHerokuのにジャンゴ+セロリを有する非同期タスク
import djcelery
djcelery.setup_loader()
BROKER_URL = "django://" # tell kombu to use the Django database as the message queue
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ALWAYS_EAGER = False
CELERY_TIMEZONE = 'Europe/Madrid'
一周期別に実行されます非同期呼び出し:
@task
def test_one_shot():
print "One shot"
@periodic_task(run_every=crontab(minute="*/5"))
def test_periodic():
print "Periodic"
Herokuのは、メインのWebワーカーとAUXILIARワーカーで構成されて
:
web: gunicorn config.wsgi:application ON
worker: python manage.py celery worker -B -l info ON
次のようにこの設定で
は、私がtest_one_shot
タスクを実行します。
test_one_shot.apply_async(eta=datetime.now()+timedelta(minutes=2))
をそしてHerokuのログに登録されたとして、それが表示されますが:
Received task: test.tasks.test_one_shot[f29c609d-b6e8-45d4-808d-2ca690f029af] eta:[2016-08-07 00:09:30.262362+02:00]
それが実行されることはありません。一方、定期的なタスクtest_periodic
は期待通りに実行されます。私は間違って何をしていますか?
ありがとうございます!
EDIT:日時の認識の問題が原因で、実行されたタスクがログに表示されませんでした。ただし、タスクがプログラムによって呼び出されると、決して実行されません。
は、あなたはそれをデバッグする必要があります。タスク内でエラーが発生している可能性があり、非同期タスクのエラーを表示しない可能性があります。 – levi
@leviどうやってデバッグしますか?私はすでにprintステートメントだけであり、セロリの労働者のヒロクのログ(何も表示されていない)を直接見ている関数をテストしています。 – kahlo
セロリタスクをデバッグする方法はこちら http://docs.celeryproject.org/en/latest/tutorials/debugging.html – levi