我在Mac OS X(10.8.4)中有一个Django项目,其中包含一个打算为机场建模的应用程序。在SQLite数据库中,我有几个表,其中一个用于航班延误(航班,日期,新时间,原因)。
我的目标是使用Celery执行某些任务,例如通知用户他们的航班延误以及删除不再有效的延迟。为此,我认为我会将Celery工作者作为守护进程运行,但在尝试阅读有关如何执行此操作的文档时遇到了很多问题。
所以我遵循了如何配置我的Django项目以使用Celery,定义和调用任务,启动工作进程和调用任务的说明。我的项目中有一个名为celerytest的额外应用程序和一个看起来像这样的tasks.py文件:
from celery import task
from flughafen.models import Country, Airline, Aircraft, Airport, Flight, Reservation, CheckIn, Delay
@task()
def delete_delays():
# code to retrieve delays which are no longer valid and to delete them
我可以根据here给出的说明调用此任务。但是,当我阅读Running the worker as a daemon的说明时,我不清楚该怎么做。
该文档提到了Mac OS X的链接,它将我重定向到github页面,其中有一些plist文件,我应该用launchctl加载。我已下载并加载它们,但它们显示为退出状态:
octavio:daemon ohd$ launchctl load org.celeryq.celerybeat.plist
octavio:daemon ohd$ launchctl load org.celeryq.celeryd.plist
octavio:daemon ohd$ launchctl load org.celeryq.celerymon.plist
octavio:daemon ohd$ launchctl list | grep celery
- 2 org.celeryq.celerymon
- 2 org.celeryq.celeryd
- 2 org.celeryq.celerybeat
我想我错过了this或this这样的配置,但我不确定它应该位于何处。
有人可以请我提供建议吗?
感谢。
答案 0 :(得分:2)
我正在努力解决这个问题。虽然我没有进入启动路线,但我最终使用daemonize实用程序获得了守护工作者。
http://software.clapper.org/daemonize/
您可以使用brew轻松安装。
然后使用Fabric我可以像这样重新启动worker:
def celeryd():
with cd('/usr/local/Cellar/daemonize/1.7.4/sbin'):
# Kill existing workers
sudo('ps auxww | grep celeryd | grep -v "grep" | awk \'{print $2}\' | xargs kill')
# Create new workers
sudo('daemonize -u pipeadmin %s/manage.py celery worker' % siteDir)