0

セロリと Django を使用して、X 秒ごとに実行したい Periodical_task を作成しています。

これは私が持っているものです..

@periodic_task(run_every=datetime.timedelta(seconds=2))
def initialize_new_jobs():
    for obj in Queue.objects.filter(status__in=['I', 'Q']):
        obj = Queue.objects.get(id=obj.id)
        if obj.status not in ['I', 'Q']:
            continue
        obj.status = 'A'
        obj.save()
        create_other_task.delay(obj.id)

これはちょっとうまくいきますが、気分が悪いです。ループの開始時に obj を更新して、別の実行中の period_task が同じ Queue オブジェクトで create_other_task を発行していないことを確認する必要があります。

この種の仕事をするためのより良い方法はありますか?基本的に、できるだけ頻繁に create_other_task を実行したいのですが、ステータスが I または Q の Queue オブジェクトごとに 1 回だけです。

これは私の問題の短縮版なので、定期的なタスクを実行する代わりに、Queue オブジェクトを作成するときに create_other_task を実行できたという事実を無視してください :)

4

1 に答える 1