【问题标题】:Celery and Django - Running worker as Daemon (Mac OS X)Celery 和 Django - 作为守护进程运行 worker (Mac OS X)
【发布时间】:2013-06-14 01:43:01
【问题描述】:

我在 Mac OS X (10.8.4) 中有一个 Django 项目,其中包含一个打算为机场建模的应用程序。在数据库 SQLite 中,我有几张表,其中一张用于航班延误(航班、日期、新小时、原因)。

我的目标是使用 Celery 执行某些任务,例如通知用户航班延误和删除不再有效的延误。为此,我认为我会将 Celery worker 作为守护进程运行,但在尝试阅读有关如何执行此操作的文档时遇到了巨大的问题。

所以我按照说明如何配置我的 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 页面,其中有一些我应该使用 launchctl 加载的 plist 文件。我已经下载并加载了它们,但它们显示为退出状态:

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

我想我缺少一些配置,例如 thisthis,但我不确定它应该放在哪里。

有人可以给我建议吗?

谢谢。

【问题讨论】:

    标签: django celery daemon django-celery


    【解决方案1】:

    我一直在努力解决这个问题。虽然我没有走 launchd 路线,但我最终使用 daemonize 实用程序获得了守护进程。

    http://software.clapper.org/daemonize/

    您可以使用 brew 轻松安装它。

    然后使用 Fabric 我可以像这样重启工人:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-27
      • 2013-02-06
      • 2011-07-12
      • 2016-10-07
      • 1970-01-01
      • 2023-03-02
      • 2014-04-26
      • 2017-10-31
      相关资源
      最近更新 更多