2010-07-28 49 views
6

不是在談論delay方法。如何使用Celery延遲任務?

我希望能夠得到一個任務,因爲它是task_id並且在執行之前即時更改它的ETA。

現在我必須取消它,並重新安排一個。如果預定的過程涉及很多東西,則會出現麻煩。

+0

所以你能做到這到底是誰? – julkiewicz 2011-05-14 05:38:12

+0

只要您將任務定義爲「吸收卡路里」,您就可以使用*芹菜*延遲任何任務。 ;-) http://wiki.answers.com/Q/Is_it_true_that_celery_has_negative_calories – Sam 2011-05-19 06:30:21

+0

@Sam lold,thx。 – julkiewicz 2011-05-20 05:59:21

回答

1

你應該在芹菜/任務隊列外存儲一些'暫停'值。我用芹菜做郵件。我可以通過在memcache或mysql中設置值來暫停系統的某些部分。這些任務會確保在執行任務之前查詢外部資源。如果它意味着被暫停,它會設置一個task.retry(),使它經歷重試延遲時間等。

+0

用於從隊列中刪除任務。如果這只是你的建議,contrib AbortableTask已經做到了。 – 2010-07-28 23:20:36

1

假設您在DatabaseScheduler中使用了django-celery和PeriodicTask,則需要修改PeriodicTask間隔或crontab並保存它。如果您的任務由間隔定義,請修改last_run_at屬性。

您運行與數據庫調度celerybeat:

python manage.py celerybeat -S djcelery.schedulers.DatabaseScheduler 
+1

問題是間隔不均勻,所以很不幸我沒有使用PeriodicTask。我需要完成問題中指定的內容。 – julkiewicz 2011-05-20 03:28:49