簡體   English   中英

與主管和virtualenv監督celerybeat

[英]Supervising celerybeat with supervisor and virtualenv

我的celerybeat.conf

[program:celerybeat]
command=/path/app/env/bin/celery beat -A project.tasks --loglevel=INFO
environment=PYTHONPATH=/path/app/env/bin

user=nobody
numprocs=1
stdout_logfile=/var/log/celeryd.log
stderr_logfile=/var/log/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
killasgroup=true
priority=998

當我啟動主管時,我收到一個錯誤:

pidfile_fd = os.open(self.path, PIDFILE_FLAGS, PIDFILE_MODE)
celery.platforms.LockFailed: [Errno 13] Permission denied: '/celerybeat.pid'

不知道怎么解決這個問題?

問題是你沒有在配置文件中指定任何目錄,默認目錄是'/'(root),你的用戶沒有權限寫。

將用戶設置為root可以解決您的問題,因為現在您有權寫入'/',但這可能不是最佳解決方案。 您可以通過多種方式解決此問題:

  1. 在配置中添加目錄變量,並提供用戶有權寫入的路徑。

     directory=<path> 
  2. 為您用於啟動celery的celery命令提供pidfile參數。 確保您對為pidfile指定的路徑具有寫入權限。

     command=/path/app/env/bin/celery beat -A project.tasks --loglevel=INFO --pidfile=/tmp/celerybeat-myapp.pid 

這是Celere擊敗的我(工作)版本:

[program:celery_periodic]
command=<venv_path>/bin/python <path>/manage.py celery worker --loglevel=info -c 1 -E -B -Q celery_periodic -f <log_folder>/celery_periodic.log -n periodic_worker
directory=<path>
user=<some_user>
group=<some_user>
autostart=true
autorestart=true
redirect_stderr=True
daemon = False
debug = False
stdout_logfile = NONE
stderr_logfile = NONE
loglevel = "info"

可能這有幫助。

還要檢查您創建pid文件的文件夾的權限。

我通過設置user = root來解決我的問題,但我認為這是不好的方法......

我遇到了類似的問題。 通過更改2設置修復:

  1. 如上所述:添加--pidfile = / tmp / celerybeat-myapp.pid
  2. user =“實際的非root用戶”

某些文檔“user = nobody”中提供的默認值似乎會導致celerybeat.conf出現額外的權限錯誤(盡管不在celery.conf中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM