2016-08-06 15 views
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:日時の認識の問題が原因で、実行されたタスクがログに表示されませんでした。ただし、タスクがプログラムによって呼び出されると、決して実行されません。

+0

は、あなたはそれをデバッグする必要があります。タスク内でエラーが発生している可能性があり、非同期タスクのエラーを表示しない可能性があります。 – levi

+0

@leviどうやってデバッグしますか?私はすでにprintステートメントだけであり、セロリの労働者のヒロクのログ(何も表示されていない)を直接見ている関数をテストしています。 – kahlo

+0

セロリタスクをデバッグする方法はこちら http://docs.celeryproject.org/en/latest/tutorials/debugging.html – levi

答えて

0

HerbyでRabbitMQを使用するセクレタバックエンドをthis guideに変更すると、問題は解決します。

基本的に、私はHerokuの上のRabbitMQをインストール:

$ heroku addons:add cloudamqp 

そして、それのための新しいコンフィギュレーションを設定します。

import djcelery 
djcelery.setup_loader() 
CELERY_TIMEZONE = 'Europe/Madrid' 

BROKER_URL = env("CLOUDAMQP_URL", default="django://") 
BROKER_POOL_LIMIT = 1 
BROKER_CONNECTION_MAX_RETRIES = None 

CELERY_TASK_SERIALIZER = "json" 
CELERY_ACCEPT_CONTENT = ["json", "msgpack"] 
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' 
CELERY_ALWAYS_EAGER = False 

if BROKER_URL == "django://": 
    INSTALLED_APPS += ("kombu.transport.django",) 
関連する問題