2012-04-29 40 views
4

私は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。

+0

celeryevを実行すると何が表示されますか? – mossplix

答えて

5

セロリビート必要なときにタスクをプッシュしますが、実行しません。 RabbitMqサーバーに格納されているインスタンスを処理します。タスクを実行するには、celerydデーモンを実行する必要があります。あなたがRabbitMQのを使用している場合

python manage.py celeryd --logfile=<path_to_log_file> -l DEBUG 

はまた、私は特別なRabbitMQの管理プラグインをインストールするようにお勧め:

rabbitmq-plugins list 
rabbitmq-enable rabbitmq_management 
service rabbitmq-server restart 

それは、httpで利用できるようになります://:55672 /ログイン:ゲストパス:ゲスト。ここであなたのウサギのインスタンスのオンラインでいくつのタスクを確認することができます。

0

セロリはタスクをRabbitMQに送信し、実行する必要があるため、RabbitMQログを確認する必要があります。したがって、タスクのすべてのプリントはRabbitMQログに記録されている必要があります。

関連する問題