芹菜节拍不会在分离模式下启动



我有 django 1.11.4 应用程序并使用芹菜 4.1.0 进行后台周期性任务。根据文档,芹菜被守护程序化,并且工作正常,直到...基本上,我不知道发生了什么。它突然坏了。

当我执行/etc/init.d/celerybeat启动时,它会向/var/log/celery/beat.log写入以下异常并停止:

[2017-09-04 18:33:38,485: INFO/MainProcess] beat: Starting...
[2017-09-04 18:33:38,485: INFO/MainProcess] Writing entries...
[2017-09-04 18:33:38,486: CRITICAL/MainProcess] beat raised exception <class 'django.db.utils.InterfaceError'>: InterfaceError
("(0, '')",)
Traceback (most recent call last):
File "/home/hikesadmin/.local/lib/python3.4/site-packages/kombu/utils/objects.py", line 42, in __get__
return obj.__dict__[self.__name__]
KeyError: 'scheduler'

以下是完整日志:https://pastebin.com/92iraMCL

我已经删除了所有任务并保留了简单的celery.py任务文件:

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
import django
import pymysql
pymysql.install_as_MySQLdb()
django.setup()
from celery import Celery
app = Celery('myapp')
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks()
@app.task
def gogo():
print("GOGO")
print(123123123)

但是芹菜仍然不起作用。它打印"123123123">,之后因相同的异常而停止。

我进行了更深入的研究,发现问题出在--detach修饰符上。当我在没有它的情况下启动它时,它可以工作:

/usr/local/bin/celery beat --app=hike_engine -S django -f /var/log/celery/beat.g -l INFO --workdir=/home/hikesadmin/engine --pidfile=/var/run/celery/beat.pid

当我添加--detach时,芹菜会变坏。

请帮助我跟踪并解决问题。谢谢!

我认为您不能通过 --detach IIRC 启动分离的节拍实例。我们正在使用管理引擎来启动/停止/重新启动我们的节拍实例:

添加/etc/supervisor/conf.d/celery-beat.conf

[program:celery-beat]
command=/path/to/env/bin/celery beat -A your.settings.module --loglevel=INFO --workdir /path/to/your/django/project --pidfile=/var/tmp/celery-beat.pid
directory=/path/to/your/django/project
killasgroup=true
stopasgroup=true
user=YOURUSERID
group=YOURUSERGROUP
numprocs=1
stdout_logfile=/var/log/celery/beat.log
stderr_logfile=/var/log/celery/beat.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
priority=998

然后更新配置 主管重读

最后启动受监督的芹菜节拍实例 主管CTL开始芹菜节拍

init.d 也记录在 Celery 文档中: http://docs.celeryproject.org/en/latest/userguide/daemonizing.html#init-script-celerybeat

相关内容

  • 没有找到相关文章

最新更新