报错描述:
在启动定时任务监听器-执行命令python manage.py celery beat --loglevel=info 时报错,
ERROR: Pidfile (celerybeat.pid) already exists.
E:\HttpRunnerManager>python manage.py celery beat --loglevel=info
celery beat v4.4.7 (cliffs) is starting.
ERROR: Pidfile (celerybeat.pid) already exists.
Seems we're already running? (pid: 25080)
E:\HttpRunnerManager>
原因解析:
celery beat在运行时,会自动创建两个文件:
- pidfile:默认为celerybeat.pid,保存在项目根目录。
- scheduler:默认为celerybeat-schedule,保存在项目根目录。
这里的报错说明pidfile已存在。在上次运行celery beat 时已经自动创建了,进程结束的时候并未自动删除,从而导致再次运行时就会报错。
解决方法:
方法一:
将项目根目录下的 celerybeat.pid 文件直接删除即可,重新运行命令 python manage.py celery beat --loglevel=info
注:这种方法每次重启运行celery beat 都要先删除celerybeat.pid 文件。
方法二:
参考网上说法,如果在启动celery beat的时候配置pidfile参数,并将该参数设置为空,就可以规避这个问题。