私はDjango-Celery-RabbitMQの組み合わせを使って、単純なバックグラウンドの定期的なタスクを作成しようとしています。私はDjango 1.3.1をインストールし、djceleryをダウンロードしてセットアップしました。ここに私のsettings.pyファイルがどのように見えるかです:djangoとセロリの定期的な作業を実行する
BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672
BROKER_VHOST = "/"
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
....
import djcelery
djcelery.setup_loader()
...
INSTALLED_APPS = (
'djcelery',
)
そして、私は、次の内容で自分のアプリケーションフォルダ内の「tasks.py」ファイルを置く:
from celery.task import PeriodicTask
from celery.registry import tasks
from datetime import timedelta
from datetime import datetime
class MyTask(PeriodicTask):
run_every = timedelta(minutes=1)
def run(self, **kwargs):
self.get_logger().info("Time now: " + datetime.now())
print("Time now: " + datetime.now())
tasks.register(MyTask)
そして、私が起動私のジャンゴ・サーバ(ローカル開発インスタンス):
python manage.py runserver
その後、私はcelerybeat
プロセスを起動:
python manage.py celerybeat --logfile=<path_to_log_file> -l DEBUG
私はログにこのようなエントリを見ることができます:
[2012-04-29 07:50:54,671: DEBUG/MainProcess] tasks.MyTask sent. id->72a5963c-6e15-4fc5-a078-dd26da663323
をそして私はまた、データベース内に作成されたばかりの対応するエントリを見ることができますが、それは私がで指定されたテキストをログに記録された場合、私は見つけることができません実際のrun
の機能はMyTask
クラスにあります。
セロリログの代わりにdjangoロガーを使ってみましたが、使用していないロギング設定を試してみました。私は確信していません、私の仕事は実行されています。タスクにデバッグ情報を出力すると、どこに行きますか?
また、私はどのタイプのメッセージキューイングシステムでも作業しています。 djangoのWebフレームワークの外側で、celerybeat
プロセスの一部としてタスクが実行されるようです。作成したすべてのdjangoモデルにはまだアクセスできますか?
ありがとう、 Venkat。
celeryevを実行すると何が表示されますか? – mossplix