84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
django-celery-beat を試してみました。管理バックグラウンドでタスクを追加すると、動的にタスクを追加できます。ただし、有効になるのは celery Beat を再起動した後です。他に試す方法はありますか?
動的に追加することはできません。ビートを再起動する必要があります。
質問に理由 #3493 が答えられました
検討できるアイデアがあり、現在この方法を試しており、石を感じながら川を渡ろうとしている段階です。 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))
リーリー
これに基づいて書き直すだけで済みます。具体的には、さまざまな方法があります。
動的に追加することはできません。ビートを再起動する必要があります。
質問に理由 #3493 が答えられました
検討できるアイデアがあり、現在この方法を試しており、石を感じながら川を渡ろうとしている段階です。 Celery はスケジュールされたタスクをサポートしていますが、Linux で crontab のようなスケジュールされたタスクを動的に追加する必要があるため、実装には参考にならないことがわかりました。ドキュメントを読んで情報を探した結果、Celery の apply_async 関数は非常に便利です。その単純な使用方法はカウントダウンですが、eta の威力は非常に大きいです。たとえば、2017-05-02 20:0:0 に実行されるタスクを指定すると、次のように使用できます。
これはめったに使用されませんか? 毎晩 8 時に実行する必要があるタスクがある場合、この eta パラメーターを使用してそれを達成できます。疑似コードは次のとおりです:job.apply_async(args=args, kwarg=kwargs, eta=datetime(2017,5,2,20,0,0))
リーリー
ここで非常に重要な点は、タスクが正常に実行されたときの次回の実行時間を計算する方法です。その方法は次のとおりです。 リーリーこれに基づいて書き直すだけで済みます。具体的には、さまざまな方法があります。