我想用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)
然後,我開始了我的Django的服務器(本地發展實例):
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記錄器而不是芹菜記錄器,但沒用。我甚至不確定,我的任務正在執行。如果我在任務中打印任何調試信息,它會去哪裏?
此外,這是我第一次使用任何類型的消息排隊系統。看起來這個任務將作爲celerybeat
進程的一部分執行 - 在django web框架之外。我仍然可以訪問我創建的所有django模型。
謝謝, Venkat。
當您運行celeryev時,您會看到什麼? – mossplix 2012-04-29 19:40:34