Python - セロリビートスケジューラの実行中にタスクを動的に追加するにはどうすればよいですか?
某草草
某草草 2017-05-18 10:56:10
0
2
2215

django-celery-beat を試してみました。管理バックグラウンドでタスクを追加すると、動的にタスクを追加できます。
ただし、有効になるのは celery Beat を再起動した後です。他に試す方法はありますか?

某草草
某草草

全員に返信(2)
为情所困

動的に追加することはできません。ビートを再起動する必要があります。

質問に理由 #3493 が答えられました

いいねを押す +0
小葫芦

検討できるアイデアがあり、現在この方法を試しており、石を感じながら川を渡ろうとしている段階です。 Celery はスケジュールされたタスクをサポートしていますが、Linux で crontab のようなスケジュールされたタスクを動的に追加する必要があるため、実装には参考にならないことがわかりました。ドキュメントを読んで情報を探した結果、Celery の apply_async 関数は非常に便利です。その単純な使用方法はカウントダウンですが、eta の威力は非常に大きいです。たとえば、2017-05-02 20:0:0 に実行されるタスクを指定すると、次のように使用できます。

job.apply_async(args=args, kwarg=kwargs, eta=datetime(2017,5,2,20,0,0))

これはめったに使用されませんか? 毎晩 8 時に実行する必要があるタスクがある場合、この eta パラメーターを使用してそれを達成できます。疑似コードは次のとおりです:

リーリー

ここで非常に重要な点は、タスクが正常に実行されたときの次回の実行時間を計算する方法です。その方法は次のとおりです。 リーリー

これに基づいて書き直すだけで済みます。具体的には、さまざまな方法があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート