2016-06-02 2 views
4

Я скрещиваю свои мозги на этом с прошлых нескольких дней, я видел другие проблемы в stackoverflow (так как это дублированный вопрос), и я пробовал все, чтобы сделать эту работу , рабочие работают нормально, но сельдерей не запускается как процесс.Запуск сельдерея в качестве демона не создает файл PID

я запускаю команду:

sudo service celeryd start 

и я получаю:

celery init v10.1. 
Using config script: /etc/default/celeryd 
celery multi v3.1.23 (Cipater) 
> Starting nodes... 
    > [email protected]: OK 

Я бегу:

sudo service celeryd status 

и я получаю:

celery init v10.1. 
Using config script: /etc/default/celeryd 
celeryd down: no pidfiles found 

celeryd down: pidfiles не найден Ошибка - это то, что мне нужно для решения.

Я знаю, что этот вопрос является дублирующим, но по-прежнему сочетается со мной на этом, потому что я попробовал все и не смог его решить.

Я развертываю этот скрипт на веб-сервисах Amazon. Я использую виртуальную среду.

Сценарий init.d берется непосредственно с here, а затем я дал ему необходимые разрешения.

Вот мой конфигурационный файл:

# Names of nodes to start 
# most people will only start one node: 
CELERYD_NODES="worker1" 
# but you can also start multiple and configure settings 
# for each in CELERYD_OPTS (see `celery multi --help` for examples): 
#CELERYD_NODES="worker1 worker2 worker3" 
# alternatively, you can specify the number of nodes to start: 
#CELERYD_NODES=10 

# Absolute or relative path to the 'celery' command: 
# CELERY_BIN="/usr/local/bin/celery" 
CELERY_BIN="/home/<user>/.virtualenvs/<virtualenv_name>/bin/celery" 

# App instance to use 
# comment out this line if you don't use an app 
# CELERY_APP="proj" 
# or fully qualified: 
CELERY_APP="<project_name>.settings:app" 

# Where to chdir at start. 
CELERYD_CHDIR="/home/<user>/projects/<project_name>/" 

# Extra command-line arguments to the worker 
CELERYD_OPTS="--time-limit=300 --concurrency=8" 

# %N will be replaced with the first part of the nodename. 
CELERYD_LOG_FILE="/var/log/celery/%N.log" 
CELERYD_PID_FILE="/var/run/celery/%N.pid" 

# Workers should run as an unprivileged user. 
# You need to create this user manually (or you can choose 
# a user/group combination that already exists, e.g. nobody). 
CELERYD_USER="celery" 
CELERYD_GROUP="celery" 

# If enabled pid and log directories will be created if missing, 
# and owned by the userid/group configured. 
CELERY_CREATE_DIRS=1 

Я использовал процесс, чтобы создать пользователя сельдерея, используя this статьи.

Мой проект - проект Django, и я указал переменную окружения DJANGO_SETTINGS_MODULE в файле настроек сельдерея, как указано в documentation, а также в стеке answer.

мне нужно изменить что-либо в сценарии init.d или что-нибудь другое, что должно быть добавлено в конфигурационном файле сельдерей Do ... Является ли это о пользователе сельдерея, которое я создал, потому что я также попытался указать

CELERYD_USER = "" 
CELERYD_GROUP = "" 

при изменении значения DEFAULT_USER на "" в сценарии init.d. Еще проблема сохранилась.

В одном из ответов было также сказано, что могут быть некоторые ошибки в проекте ... но я не обнаружил таких ошибок из-за моих тестовых случаев.

PS: Я указал, и для вопросов конфиденциальности они имеют свои первоначальные имена.

+0

У меня такая же проблема. Кажется, следующая документация приводит вас сюда иногда. – Ryan

ответ

0

Я видел ту же проблему, и это оказалось проблемой с разрешениями. Убедитесь, что пользователь/группа, на которой работает сельдерей, принадлежит/var/log/celery/and/var/run/celery/folders. См. Здесь пошаговый пример: Daemonizing celery

0

У меня была проблема и она была решена только сейчас, слава богу! Для меня это вопрос разрешения. Я ожидал, что это будет в/var/run/celery или/var/log/celery, но оказалось, что это файл журнала, для которого я установил запись в Django. По какой-то причине сельдерей хотел написать в этот файл (я должен посмотреть на это), но не имел никакого разрешения. Я нашел ошибку с многословной командой и пропустить daemonization шаг:

# C_FAKEFORK=1 sh -x /etc/init.d/celeryd start 

Это старая нить, но если кто-нибудь из вас запустить в эту ошибку, я надеюсь, что это может помочь!

Удачи вам!

Смежные вопросы