2016-07-12 26 views
0

私は英語が上手ではないので、私の文章を理解できない場合は、私にコメントをお願いします。セロリの定期的な仕事がdjangoのasnycとして

私はdjangoの定期的な作業のためにセロリを使用します。

CELERYBEAT_SCHEDULE = { 
    'send_sms_one_pm': { 
     'task': 'tasks.send_one_pm', 
     'schedule': crontab(minute=0, hour=13), 
    }, 
    'send_sms_ten_am': { 
     'task': 'tasks.send_ten_am', 
     'schedule': crontab(minute=0, hour=10), 
    }, 
    'night_proposal_noti': { 
     'task': 'tasks.night_proposal_noti', 
     'schedule': crontab(minute=0, hour=10) 
    }, 
} 

これは私のセロリスケジュールであり、私はセロリキューにredisを使用します。

問題は、最大のタスクが開始されたときに、他のタスクが保留されていることです。 最大タスクは10時間処理され、他のタスクは10時間後に開始されます。

私のタスクは

@app.task(name='tasks.send_one_pm') 
def send_one_pm(): 

のように見える私は)(セロリが私をtask.apply_asnyc与える、見つけましたが、定期的なタスクがasnycで作業することができます見つけることができませんでした。

セロリの定期的なタスクがasnycタスクとして機能することを知りたいと思います。私のセロリの労働者は8人の労働者です。

答えて

0

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'も設定に割り当てましたか? 使用すると、1つのタスクが別のものの後に実行を開始したい場合は、リンクkwargsapply_asnyc()を使用する必要があり、それは次のようになります。

res=[signature(your_task.name, args=(...), options=kwargs, immutable=True),..] 
task.apply_async((args), link=res) 
関連する問題