iT邦幫忙

0

supervisor 管理 虛擬環境下celery的 問題

supervisor安裝在外部環境
虛擬環境配置為:
python3.6
Django2.0
celery4.2

celery在本地可以正常運行
但如果藉由supervisor會發生以下錯誤訊息:

  File "/path/env/mysite/mysite/__init__.py", line 5, in <module>
    from .celery import app as celery_app
  File "/path/env/mysite/mysite/celery.py", line 7, in <module>
    app.config_from_object('django.conf:settings', namespace='CELERY')
TypeError: config_from_object() got an unexpected keyword argument 'namespace'

原先supervisor關於celery worker的配置:

[program:celery.worker] 
;運行目錄
directory=/path/env/mysite/
;運行目錄下執行命令
command=/path/env/mysite/celery -A mysite worker -l info
user=root

numprocs=1          
autostart=true      
autorestart=true    
stopsignal=INT
stdout_logfile=/path/env/mysite/celery_worker.log 
stdout_logfile_maxbytes=10MB  
stdout_logfile_backups=10     
 redirect_stderr=false         
stderr_logfile=/path/env/mysite/celery_worker_err.log 
stderr_logfile_maxbytes=10MB 
stderr_logfile_backups=10

嘗試過的操作:
1.添加環境

environment=PATH="/path/env/bin",VIRTUAL_ENV="/path/env/mysite/",PYTHONPATH="/path/env/lib/python:/path/env/lib/python3.6/site-packages"

我也不知道在哪個討論看到的,試過但沒有用

2.完整添加command路徑

command=/path/env/mysite/celery -A mysite worker -l info

運行supervisor後,查詢supervisor> status
有以下錯誤訊息:

supervisor> status
celery.work                      BACKOFF   can't find command '/path/env/mysite/celery'

我看網路上大部份路徑是長這樣子的:

command=/path/env/mysite/bin/celery -A mysite worker -l info

但我的專案目錄下並沒有bin資料夾
我參照上面的從 env下的 bin運行 則會出現以下錯誤訊息:

ModuleNotFoundError: No module named 'mysite'

在本地env下的bin 也無法運行 celery worker,與上面出現同樣的錯誤
我只能在mysite目錄運行celery worker

部署卡了好多天
希望有高手相助

froce iT邦大師 2 級 ‧ 2018-09-05 22:01:24 檢舉
/path/env/mysite/ 下的東西列出來看看?
問題應該是 celery4.2 與 supervisor 會發生問題
使用celery 3.1.16 目前算是解決了

尚未有邦友回答

立即登入回答