0

クラスを継承しており、celery.task.PeriodicTaskこのタスクを非同期で実行したい場合があります。

それが通常のメソッドタスクである場合、私は次のようなことをしました:

@periodic_task(run_every=timedelta(minutes=15))
def mytask(additional=False):
    if a==b and not additional:
        # args = [True,] sets additional=True
        mytask.apply_async(args=[True, ], countdown=7*60)

しかし今、私はクラスを持っています:

from celery.task import PeriodicTask
class MyClassTask(PeriodicTask):
    def run(self, additional=False):
        if a == b and not additional:
            self.apply_async(task_id=self.request.id, args=[True, ], countdown=7*60)

編集: コードは正常に動作しています。確認しましたが、質問はもう必要ありません。

4

1 に答える 1

0

手動で再確認したところ、コードが機能しました。誰でも次のように実行できます。

from celery.task import PeriodicTask
class MyClassTask(PeriodicTask):
    def run(self, additional=False):
        if a == b and not additional:
            self.apply_async(task_id=self.request.id, args=[True, ], countdown=7*60)
于 2013-11-11T13:35:40.570 に答える