Подтвердить что ты не робот

Сельдерей - ошибка errno 111 отказалась

Мои задачи сельдерея перестают выполняться между ними. Мой rabbitmq останавливается между ними, а затем мне нужно перезапустить его вручную. В прошлый раз (15-16 часов назад) возникла аналогичная проблема, я сделал следующее (вручную), и он снова начал работать.

Я переустановил кролик, а затем снова начал работать.

sudo apt-get --purge remove raabitmq-server

sudo apt-get install raabitmq-server

Теперь он снова показывает `

Celery - errno 111 connection refused

Ниже приведена моя конфигурация.

BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True

CELERY_CREATE_MISSING_QUEUES = True

Пожалуйста, дайте мне знать, где я ошибаюсь?

Как его исправить?

Ч .2

Кроме того, у меня несколько очередей. Я могу запустить его в каталоге проекта, но при демонизации рабочие не берут на себя задачу. Мне все еще нужно вручную начинать сельдерей. Как я могу демозировать его?

Вот мой celerd conf.

# Name of nodes to start, here we have a single node
CELERYD_NODES="w1 w2 w3 w4"


CELERY_BIN="/usr/local/bin/celery"

# Where to chdir at start.
CELERYD_CHDIR="/var/www/fractal/parser-quicklook/"

# Python interpreter from environment, if using virtualenv
#ENV_PYTHON="/somewhere/.virtualenvs/MyProject/bin/python"

# How to call "manage.py celeryd_multi"
#CELERYD_MULTI="/usr/local/bin/celeryd-multi"

# How to call "manage.py celeryctl"
#CELERYCTL="/usr/local/bin/celeryctl"

#CELERYBEAT="/usr/local/bin/celerybeat"

# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=8  -Q BBC,BGR,FASTCOMPANY,Firstpost,Guardian,IBNLIVE,LIVEMINT,Mashable,NDTV,Pandodaily,Reuters,TNW,TheHindu,ZEENEWS "

# Name of the celery config module, don't change this.
CELERY_CONFIG_MODULE="celeryconfig"

# %n will be replaced with 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.
#CELERYD_USER="nobody"
#CELERYD_GROUP="nobody"

# Set any other env vars here too!
PROJET_ENV="PRODUCTION"

# Name of the projects settings module.
# in this case is just settings and not the full path because it will change the dir to
# the project folder first.
CELERY_CREATE_DIRS=1

Celeryconfig уже представлен в части 1.

Вот моя структура каталога proj.

project
|-- main.py
|-- project
|   |-- celeryconfig.py
|   |-- __init__.py
|-- tasks.py

Как я могу демонизировать с очередями? Я также предоставил очереди в CELERYD_OPTS.

Есть ли способ, которым мы можем динамически демонизировать количество очередей в сельдерее? Например, для создания недостающих очередей мы имеем CELERY_CREATE_MISSING_QUEUES = True. Есть ли что-то похожее на демоннизацию очередей сельдерея?

4b9b3361

Ответ 1

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

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

  • Вам следует начать с основных проверок работоспособности (например, центрального процессора, процессов и памяти),
  • проверьте вашу установку следующим образом: https://www.rabbitmq.com/install-debian.html
  • затем проверьте лог файлы Rabbit, их места, перечисленные здесь: https://www.rabbitmq.com/relocate.html
  • или любой другой файл журнала ОС, который может указывать на правильное направление (например, /var/log/syslog может быть хорошим местом для запуска). Вы ничего не говорите о своей серверной ОС, но предполагаете, что это Debian/Ubuntu, потому что вы упоминаете apt-get, вот список местоположений журнала OS, которые могут помочь: https://help.ubuntu.com/community/LinuxLogFiles

также убедитесь, что ваш сервер RabbitMQ настроен с правильными учетными данными и разрешает доступ из вашего рабочего места (например, включить соединения, отличные от пользователей loopback): вот что вам нужно сделать: https://www.rabbitmq.com/access-control.html

то проверьте, что вы настроили своего работника с правильными учетными данными для проверки подлинности, полный URL-адрес должен выглядеть примерно так: пользователь должен получить доступ к определенному виртуальному хосту, его легко настроить через интерфейс управления RabbitMQ https://www.rabbitmq.com/management.html):

BROKER_URL = 'amqp://user:[email protected]:port/virtualhost' CELERY_RESULT_BACKEND = 'amqp://user:[email protected]:port/virtualhost'

и, наконец, попытайтесь отследить исключение в python, что, надеюсь, даст вам дополнительную информацию об ошибке

HTH

p.s. число рейнольдса демонизируя вашего работника сельдерея, ответ @budulianin на месте!

Ответ 2

Как я могу демозировать его?

Обычно для этой цели я использую supervisord.

Здесь пример конфигурации:

[program:celery]
command=/home/my_project/.virtualenvs/my_project/bin/celery worker
    -A my_project.project.celery_app.celery_app
    -n worker-%(process_num)s
    --concurrency=4
    --statedb=/tmp/%(process_num)s.state
    -l INFO

environment=MY_SETTINGS='/etc/my_settings.py'
process_name=%(program_name)s_%(process_num)02d
numprocs_start=1
numprocs=4
user=user_name
directory=/home/my_project
stdout_logfile=/var/log/my_project/celery.log
stderr_logfile=/var/log/my_project/celery_err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
killasgroup=true
priority=998

BTW, CELERY_CREATE_MISSING_QUEUES включен по умолчанию.