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
部署卡了好多天
希望有高手相助