2016-05-11 12 views
2

私はDjangoを含まないプロジェクトを持っていますので、djceleryは使用できません。Celerybeatは、実行時に動的にタスクを追加/削除できますか?

しかし、modificationdjango-celery DatabaseScheduleであることが、sqlalchemyを使用して見つかりました。

djceleyのDatabaseScheuleのようにうまくいきます。 しかし、唯一の問題は、実行時に追加されたタスクを送信していないように見えてから、セルリービートを再起動して、前に追加したタスクが正常に送信されることです。

セロリ・ビートを再起動せずにタスクを動的に追加/削除することは可能ですか?

ありがとうございました。そして、私の悪い英語のために申し訳ありません。

申し訳ありませんが、それは私のせいでした。実行時に追加されたタスクはすぐには取得されませんが、DatabaseScheduler.sync_everyの値をより高速なものに変更することができます。それは数分待ってから動作します。

tuomurさんのおかげでありがとうございました。

答えて

1

解決方法1:

は私も同じ問題を抱えていたが、問題がある、セロリ、定期的スケジューラは[last_update]値を持つことになります[djcelery_periodictasks]を探します。 [last_update]に変更がなければ、セロリは[djcelery_periodictask]テーブルをチェックしません。

私たちがしなければならないことは、これまでにの時間を[djcelery_periodictasks]に追加/削除するときです。

私のシナリオでは、私は定期的にscheduelrをpythonで持っています。しかし、私のWeb UIはC#で書かれています。私のWebアプリケーションは、[djcelery_periodictask]にエントリを追加/削除し、[last_update]時間を[djcelery_periodictasks]に更新します。

こうして、私はこの問題を解決しました。

標準flowerのUIを使用する場合は、タスクを追加/削除するとの時間が[djcelery_periodictasks]に更新されます。独自のカスタムUI /アプリケーションを開発した場合は、[last_update]の時間を[djcelery_periodictasks]に更新する機能を含めて、タスクを動的に追加/削除する必要があります。

対処方法2:

使用の花:https://github.com/mher/flower

+0

修正とdjcelery.It間のいくつかの違いがありますが、 '' date_changed'フィールドにlast_update'フィールドを変更し、 'date_changed'が設定されます。 datetime.datetime.utcnow()にタスクを追加すると、 'last_update'値が設定されています。あなたの答えに感謝します。 – HFX

関連する問題