簡體   English   中英

sudo /etc/init.d/celeryd start生成“未知命令:'celeryd_multi'”

[英]sudo /etc/init.d/celeryd start generates a “Unknown command: 'celeryd_multi'”

我正在使用我的虛擬環境中的變量設置celery來運行daemonized。 但是當我運行$ sudo /etc/init.d/celeryd start ,我收到Unknown command: 'celeryd_multi' Type 'manage.py help' for usage.

我設置了以下內容:

CELERYD_CHDIR =“/ home / myuser / projects / myproject”ENV_PYTHON =“/ home / myuser / .virtualenvs / myproject / bin / python”CELERYD_MULTI =“$ ENV_PYTHON $ CELERYD_CHDIR / manage.py celeryd_multi”

當我從命令行運行$ /home/myuser/.virtualenvs/myproject/bin/python /home/myuser/projects/myproject/manage.py celeryd_multi ,它運行正常。

有任何想法嗎? 我很樂意發布你需要的任何其他代碼:)

謝謝!

也許你只是設置錯誤的DJANGO_SETTINGS_MODULE:

嘗試:DJANGO_SETTINGS_MODULE =“設置”< - > DJANGO_SETTINGS_MODULE =“project.settings”

這里的問題是當你以用戶身份運行它時,virtualenv已經為你的用戶“myuser”激活了適當的環境,它從/home/myuser/.virtualenvs/myproject /中提取包。

當您執行sudo /etc/init.d/celeryd start時,您將以root身份啟動芹菜,如果這樣的東西甚至存在,可能沒有在/root/.virtualenvs/中激活virtualenv,因此它在/ usr中查找python包/ lib / ...你的默認python是什么,因此你的芹菜沒有安裝。

您可以選擇:

  1. 在root用戶下復制相同的virtualenv並像嘗試使用sudo一樣啟動它
  2. 保持virtualenv的位置,並在不使用init腳本的情況下以您的用戶“myuser”(無sudo)啟動celery。
  3. 編寫一個腳本來su - myuser -c /bin/sh /home/myuser/.virtualenvs/myproject/bin/celeryd從init.d作為myuser調用它。
  4. 在virtualenv之外安裝主管,讓它為你做臟工

思考:

  1. 避免使用root用於任何你不需要的東西。
  2. 如果您不需要芹菜來啟動,那么這很好,可能包含在腳本中。
  3. 對我來說很簡單,但是如果你不想再投入30分鍾來使用別的東西,那就行了。
  4. 可能是處理所有python啟動需求的最好方法,強烈推薦。

暫無
暫無

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

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