12

を使用してセロリ ビート スケジュールを作成するtimedelta(days=1)と、最初のタスクは 24 時間後に実行されます。セロリ ビートのドキュメントを引用します。

スケジュールに timedelta を使用すると、タスクが 30 秒間隔で送信されます (最初のタスクは、セロリ ビートが開始されてから 30 秒後に送信され、最後に実行されてから 30 秒ごとに送信されます)。

しかし、実際には、多くの状況で、スケジューラが起動時にタスクを実行することが実際に重要です。しかし、セロリの開始直後にタスクを実行できるオプションが見つかりませんでした。注意深く読んでいないのでしょうか。セロリにはこの機能がありませんか?

4

3 に答える 3

4

すべてのタスクのインスタンスを宣言し、セロリの起動時に実行するだけでよいと判断しました。セロリのビートの開始が非常に遅くなるため(遅い場合)、これはまったく好きではありませんがPeriodicTask、私が望むことはできます。

これを の最後に追加するだけですtasks.py:

########### spawn all tasks at launch! ############
localmess = locals().values()
for obj in localmess:
    if isclass(obj):
        if obj is not PeriodicTask and issubclass(obj, PeriodicTask):
            instance = obj()
            logger.info('running {0}'.format(obj))
            try:
                instance.run()
            except:
                logger.warn('task fail: {0}'.format(obj))
                pass

######## all tasks must be decleared above! ########
于 2015-07-18T07:30:07.120 に答える