Ошибка uwsgi: «сельдерей: не найден» при работе с сельдереем в venv с attach-daemon2 - PullRequest
0 голосов
/ 27 июня 2019

Если я запускаю celery вручную из виртуальной среды моего приложения django, это работает:

(hackerspace) 90158@hackerspace:~/hackerspace/src$ celery -A hackerspace_online worker -l info -c 3 -Q default

 -------------- celery@hackerspace v4.3.0 (rhubarb)
---- **** ----- 
--- * ***  * -- Linux-4.4.0-151-generic-x86_64-with-Ubuntu-16.04-xenial 2019-06-27 10:19:53
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         hackerspace_online:0x7f8ecb7dbba8
- ** ---------- .> transport:   redis://127.0.0.1:6379/0
- ** ---------- .> results:     
- *** --- * --- .> concurrency: 3 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> default          exchange=default(direct) key=default


[tasks]
  . hackerspace_online.celery.debug_task
  . update_conditions_for_quest
  . update_quest_conditions_all
  . update_quest_conditions_for_user

[2019-06-27 10:19:53,439: INFO/MainProcess] Connected to redis://127.0.0.1:6379/0
[2019-06-27 10:19:53,447: INFO/MainProcess] mingle: searching for neighbors
[2019-06-27 10:19:54,466: INFO/MainProcess] mingle: all alone
[2019-06-27 10:19:54,482: INFO/MainProcess] celery@hackerspace ready.

Но я не могу заставить его работать с uwsgi's attach-daemon2:

#hackerspace_uwsgi.ini
[uwsgi]
...
attach-daemon2  = cmd=%(chdir)/celery -A hackerspace_online worker -l info -c 3 -Q default

Мой журнал uwsgi выдает мне эту ошибку:

[uwsgi-daemons] respawning "/home/90158/hackerspace/src/celery -A hackerspace_online worker -l info -c 3 -Q default" (uid: 33 gid: 33)
/bin/sh: 1: /home/90158/hackerspace/src/celery: not found

Что, похоже, указывает на то, что он не запускается из виртуальной среды. Как я могу заставить uwsgi запускать сельдерей так, чтобы он работал так же, как когда я запускаю его вручную?

1 Ответ

0 голосов
/ 29 июня 2019

Документы uwsgi говорят, что нужно попробовать это, используя smart-attach-daemon и файл pid.Сам Celery рекомендует использовать multi для запуска рабочих при демонизации :

[uwsgi]
master = true
socket = :3031
smart-attach-daemon = /tmp/celery.pid celery -A tasks worker --pidfile=/tmp/celery.pid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...