2017-01-12 4 views
0

Я использую ubuntu 16 и systemd для работы с сельдереем как daemon.i также создали файл блока, но я не могу запускать сельдерей в качестве сервиса. почему эта ошибка?cell daemon using systemd не работает

/etc/systemd/system/celery.service

[Unit] 
Description=Celery Service 
After=network.target 

[Service] 
Type=forking 
User=celery 
Group=celery 
EnvironmentFile=-/etc/default/celery 
WorkingDirectory=/srv/weaver/src 
ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \ 
    -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \ 
    --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}' 
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \ 
    --pidfile=${CELERYD_PID_FILE}' 
ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \ 
    -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \ 
    --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}' 

[Install] 
WantedBy=multi-user.target 

файл в/и т.д./по умолчанию/сельдерей

ENABLED="true" 
CELERYD_NODES="worker1" 
#CELERYD_NODES="worker1 worker2 worker3" 
CELERY_BIN="/usr/local/bin/celery" 
CELERY_APP="main:celery_app" 
CELERYD_CHDIR="/srv/weaver/src" 
CELERYD_OPTS=" --queue=weaver --time-limit=100000 --concurrency=2" 
CELERYD_LOG_FILE="/var/log/celery/%N.log" 
CELERYD_PID_FILE="/var/run/celery2/%N.pid" 
CELERYD_USER="celery" 
CELERYD_GROUP="celery" 
CELERY_CREATE_DIRS=1 
# Change Celery Beat 
CELERYBEAT_CHDIR="/srv/weaver/src" 
# Log files 
CELERYBEAT_LOG_FILE="/var/log/celery/celerybeat.log" 
# Celery Beat Log files 
CELERYBEAT_PID_FILE="/var/run/celery/celerybeat.pid" 
# Scheduler for celery 
CELERYBEAT_OPTS=" --pidfile=/var/run/celery/celerybeat.pid --sch 

ВЫВОД погонных СЛУЖБЫ

● celery.service - Celery Service 
    Loaded: loaded (/etc/systemd/system/celery.service; disabled; vendor preset: enabled) 
    Active: failed (Result: exit-code) since Thu 2017-01-12 17:12:32 IST; 2min 17s ago 
    Process: 18561 ExecStop=/bin/sh -c ${CELERY_BIN} multi stopwait ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE} (code=exited, status=0/SUCCESS) 
    Process: 18540 ExecStart=/bin/sh -c ${CELERY_BIN} multi start ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FIL 
Main PID: 18555 (code=exited, status=1/FAILURE) 

Jan 12 17:12:30 fb01 systemd[1]: Starting Celery Service... 
Jan 12 17:12:31 fb01 sh[18540]: celery multi v3.1.23 (Cipater) 
Jan 12 17:12:31 fb01 sh[18540]: > Starting nodes... 
Jan 12 17:12:31 fb01 sh[18540]:   > [email protected]: OK 
Jan 12 17:12:31 fb01 systemd[1]: Started Celery Service. 
Jan 12 17:12:32 fb01 systemd[1]: celery.service: Main process exited, code=exited, status=1/FAILURE 
Jan 12 17:12:32 fb01 sh[18561]: celery multi v3.1.23 (Cipater) 
Jan 12 17:12:32 fb01 sh[18561]: > [email protected]: DOWN 
Jan 12 17:12:32 fb01 systemd[1]: celery.service: Unit entered failed state. 
Jan 12 17:12:32 fb01 systemd[1]: celery.service: Failed with result 'exit-code'. 
+1

Пожалуйста, также включают в себя содержимое файлов журналов сельдерей, путь определяется в конфигурационном файле вы представили : 'CELERYD_LOG_FILE ="/var/log/celery /% N.log "' –

+0

Журналы @ running.t пусты. Система ubuntu не может запускать ее как услугу, поэтому ошибка – anekix

+1

Тогда я не уверен, что кто-нибудь может вам помочь. Единственная информация, которую вы показали, это то, что сельдерей выходит с кодом выхода 1. Вам придется отлаживать его каким-то образом. Может быть, некоторая информация в syslog или в/var/log/messages? Кстати, этот вопрос ** должен быть задан на разных услугах, например. http://askubuntu.com или http://superuser.com, так как это не связано с программированием. –

ответ

0

Я просто попал в эту точную проблему. Моя проблема была связана с конфигурацией. В частности, я не установил CELERYD_LOG_LEVEL в файле моей среды. (/ etc/default/celeryd в вашем случае). Похоже, вы совершили ту же ошибку.

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