celery beat 之Pidfile (celerybeat.pid) already exists報錯
今天在django中利用celery來自動添加任務時,執行celery beat -A celery_task -l info
啟動一個添加任務的服務時報錯:Pidfile (celerybeat.pid) already exists
報錯原因
celery beat在運行時,會自動創建兩個文件:
- pidfile:默認為celerybeat.pid,保存在項目根目錄。
- scheduler:默認為celerybeat-schedule,保存在項目根目錄。
這里的報錯說明pidfile已存在。上次運行的時候,已經自動創建了,進程結束的時候並未自動刪除,從而導致再次運行的時候報錯了。
解決方法
直接刪除這個pidfile文件,再次啟動celery beat
celery beat -A celery_task -l info
運行成功了。
那么難道每次重啟都得先刪除么?參考網上說法,如果在啟動celery beat的時候配置pidfile參數,並將該參數設置為空,可以規避這個問題。