【问题标题】:Celery + Django: Cannot start celerybeat on Windows 7Celery + Django:无法在 Windows 7 上启动 celerybeat
【发布时间】:2012-02-01 03:54:05
【问题描述】:

这里有奇怪的问题。我一直在开发一个 Django 应用程序,现在我正在尝试实现 Celery。我需要对正常任务和定期任务进行排队。我可以很好地启动 celeryd,并用它执行任务(我用命令python manage.py celeryd start --settings=settings --loglevel=INFO 启动它)。

在 Windows 上,您不能通过 -beat/-b 来启用节拍模式;您需要将 celerybeat 作为单独的服务启动(这在 Celery 文档的常见问题解答部分中有说明)。如果我在命令行中输入这个——python manage.py celerybeat -s djcelery.schedulers.DatabaseScheduler --settings=settings --loglevel=INFO——我会收到这样的错误:

[2012-01-02 19:06:52,009: WARNING/MainProcess] ERROR: Pidfile (celerybeat.pid) a
lready exists.
Seems we're already running? (PID: 2364)
[2012-01-02 19:06:52,012: INFO/MainProcess] process shutting down

而且 celerybeat 从未真正启动。所以我不能执行任何周期性任务......有什么想法吗?我只发现one other page 有人强调了类似的错误,但没有提供解决方案。

如果需要任何进一步的信息,请告诉我。我很困惑,因为我找不到关于这个主题的任何信息,而且我今天整天都在尝试解决这个问题......谢谢。

【问题讨论】:

    标签: python windows django celery django-celery


    【解决方案1】:

    在您的文件系统中搜索该 pid 文件并将其删除。在 unix 机器上,这通常意味着程序没有正确关闭。您应该检查它是否已经在任务管理器中运行,如果是,则将其杀死,然后删除该文件

    然后再试一次。

    如果不存在 pid 文件,这可能意味着软件存在问题,因为它可能是从 unix 移植的?

    【讨论】:

    • 我手动停止了 RabbitMQ 服务,找到并删除了celerybeat.pid,然后启动了 RabbitMQ 备份——现在它可以工作了。非常感谢,我不知道为什么我自己没有尝试……我想我只是太胆小了。对于其他想要避免这种不便的人——确保在关闭命令提示符之前总是键盘中断 celeryd 和 celerybeat!
    【解决方案2】:

    就我在 Windows 上的 django 项目而言,这个文件已经存在于 Django 项目的根目录中。我删除了该文件,该过程运行没有任何错误。

    “celerybeat.pid”已经存在,因为我从另一台 PC 运行 celery beat 并将 git repo 推送到云端。当我在我的工作 PC 上提取 repo 并运行该过程时,它给了我一个错误,指的是另一台 PC 之前创建的文件“celerybeat.pid”。删除“celerybeat.pid”使其工作。

    【讨论】:

    • 我赞成这个答案。它很好地解决了我面临的问题。