4

ボトルを使用してプロジェクトを構築していますが、特定のスケジュールされたアクションを定期的に実行する必要があります。

スケジュールされた作業をプログラムで管理するための最も堅牢で完全なソリューションのように思えたので、rabbitmq + celery を使用することにしました。

rabbitmq と celery の両方を正常にインストールしました。 celeryd -B を使用すると、タスクは正常に完了します。ただし、celerybeatコマンドを使用すると、タスクは「送信」されます(または、出力が表示されます。これは、-lデバッグオプションを使用してcelerydとcelerybeatの両方を実行してより詳細にするためです)が、定期的に「送信」されていますが、そうではありません'実行されます (テスト目的で、タスクは現在のタイムスタンプを 60 秒ごとにファイルに追加する必要があります)。とにかく、同じディレクトリの celeryd -B コマンドが正常に機能するため、他のすべては正常に機能し、予想される間隔でファイルを書き込みます。

何か不足していますか?

$celerybeat -l debug の出力は次のとおりです。

[2012-06-30 18:07:44,676: WARNING/MainProcess] celerybeat v2.5.5 is starting.
[2012-06-30 18:07:44,750: WARNING/MainProcess] __    -    ... __   -        _
Configuration ->
    . broker -> amqp://guest@localhost:5672//
    . loader -> celery.loaders.default.Loader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@DEBUG
    . maxinterval -> 5.00 minutes (300s)
[2012-06-30 18:07:44,751: DEBUG/MainProcess] Setting default socket timeout to 30
[2012-06-30 18:07:44,751: INFO/MainProcess] Celerybeat: Starting...
[2012-06-30 18:07:44,776: DEBUG/MainProcess] Current schedule:
<Entry: celery.backend_cleanup celery.backend_cleanup() {<crontab: 0 4 * (m/h/d)>}
<Entry: often tasks.output() {<freq: 1.00 minute>}
[2012-06-30 18:07:44,776: DEBUG/MainProcess] Celerybeat: Ticking with max interval->5.00 minutes
[2012-06-30 18:07:44,781: DEBUG/MainProcess] Start from server, version: 8.0, properties: {u'information': u'Licensed under the MPL.  See http://www.rabbitmq.com/', u'product': u'RabbitMQ', u'copyright': u'Copyright (C) 2007-2012 VMware, Inc.', u'capabilities': {}, u'platform': u'Erlang/OTP', u'version': u'2.8.4'}, mechanisms: [u'PLAIN', u'AMQPLAIN'], locales: [u'en_US']
[2012-06-30 18:07:44,785: DEBUG/MainProcess] Open OK! known_hosts []
[2012-06-30 18:07:44,787: DEBUG/MainProcess] using channel_id: 1
[2012-06-30 18:07:44,789: DEBUG/MainProcess] Channel open
[2012-06-30 18:07:44,790: INFO/MainProcess] Scheduler: Sending due task tasks.output
[2012-06-30 18:07:44,794: DEBUG/MainProcess] Celerybeat: Synchronizing schedule...
[2012-06-30 18:07:44,838: DEBUG/MainProcess] tasks.output sent. id->53951ab0-022d-40a5-9f56-9a4a294294c7
[2012-06-30 18:07:44,838: DEBUG/MainProcess] Celerybeat: Waking up in 1.00 minute.
4

1 に答える 1