8

django を使用してレポート ポータルを構築しています。このポータルでは、ユーザーがレポートを定期的に実行するようにスケジュールできるようにする必要があります。私は django-celery を調査しており、periodic_task デコレーターを使用して繰り返し発生するタスクをスケジュールできることを理解していますが、すべての例で、cron スケジュール情報がデコレーターにハードコードされているのを見てきました。

@periodic_task(run_every=crontab(hours=7, minute=30, day_of_week="mon"))

django-celery を使用して、ユーザーからの入力に基づいて繰り返し発生するタスクを動的にスケジュールする方法はありますか?

たとえば、ユーザーはフォームを使用して、実行するレポートを選択し、レポートに必要なすべてのパラメーターと、レポートを実行するスケジュールを指定します。フォームを処理したら、run_report タスクをスケジュールに追加するために呼び出すことができるメソッドまたは関数はありますか? もしそうなら、データベースに保存されているすべての現在のスケジュールを取得して表示できるようにする方法はありますか?

4

3 に答える 3

1

管理インターフェイスで djcelery を見てみましょう: http://localhost:8000/admin/djcelery/

そこに必要なタスクセットアップを構築できるかどうか試してください (crontabs/intervals/定期的なタスクを使用して) もしそうなら、これをすぐに構築できる大きな可能性があります..

于 2012-02-14T12:06:26.577 に答える
1

http://celery.readthedocs.org/en/latest/userguide/calling.html

例えば:-

from celery import task

@task.task(ignore_result=True)
def T(message=None ):
    print message

.

T.apply_async(countdown=10, message="hi")

今から 10 秒後に実行されます。

T.apply_async(eta=now + timedelta(seconds=10),message="hi")

eta を使用して指定された、今から 10 秒後に実行します

T.apply_async(countdown=60, expires=120,message="hi")

今から 1 分後に実行されますが、2 分後に期限切れになります。

于 2014-09-17T12:40:44.717 に答える