Сельдерей, терпящий неудачу в эластичном бобовом стебле aws [выход: сельдерей-рабочий (состояние выхода 1; не ожидается)] - PullRequest
0 голосов
/ 26 января 2019

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

Как запустить работника сельдерея с приложением Django, масштабируемым AWS ElasticBeanstalk?

У меня были некоторые проблемы при установке pycurl, но я решил их с помощью комментария в:

Pip Requirements.txt --global-option, вызывающего ошибки установки с другими пакетами.«опция не распознана»

Затем я получил:

[2019-01-26T06:43:04.865Z] INFO  [12249] - [Application update app-190126_134200@28/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_1_raiseflags/Command 05_celery_tasks_run] : Activity execution failed, because: /usr/bin/env: bash
  : No such file or directory
   (ElasticBeanstalk::ExternalInvocationError)

Но также решил: оказалось, что мне пришлось преобразовать файл «celery_configuration.txt» в UNIX EOL (яЯ использую Windows, и Notepad ++ автоматически преобразовал его в Windows EOL).

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

Я получаю:

2019-01-26 09:12:57,337 INFO exited: celeryd-beat (exit status 1; not expected)
2019-01-26 09:12:58,583 INFO spawned: 'celeryd-worker' with pid 25691
2019-01-26 09:12:59,453 INFO spawned: 'celeryd-beat' with pid 25695
2019-01-26 09:12:59,666 INFO exited: celeryd-worker (exit status 1; not expected)
2019-01-26 09:13:00,790 INFO spawned: 'celeryd-worker' with pid 25705
2019-01-26 09:13:00,791 INFO exited: celeryd-beat (exit status 1; not expected)
2019-01-26 09:13:01,915 INFO exited: celeryd-worker (exit status 1; not expected)
2019-01-26 09:13:03,919 INFO spawned: 'celeryd-worker' with pid 25728
2019-01-26 09:13:03,920 INFO spawned: 'celeryd-beat' with pid 25729
2019-01-26 09:13:05,985 INFO exited: celeryd-worker (exit status 1; not expected)
2019-01-26 09:13:06,091 INFO exited: celeryd-beat (exit status 1; not expected)
2019-01-26 09:13:07,092 INFO gave up: celeryd-beat entered FATAL state, too many start retries too quickly
2019-01-26 09:13:09,096 INFO spawned: 'celeryd-worker' with pid 25737
2019-01-26 09:13:10,084 INFO exited: celeryd-worker (exit status 1; not expected)
2019-01-26 09:13:11,085 INFO gave up: celeryd-worker entered FATAL state, too many start retries too quickly

У меня также есть эта часть журналов:

[2019-01-26T09:13:00.583Z] INFO  [25247] - [Application update app-190126_161213@43/AppDeployStage1/AppDeployPostHook/run_supervised_celeryd.sh] : Completed activity. Result:
  [program:celeryd-worker]
  ; Set full path to celery program if using virtualenv
  command=/opt/python/run/venv/bin/celery worker -A raiseflags --loglevel=INFO

  directory=/opt/python/current/app
  user=nobody
  numprocs=1
  stdout_logfile=/var/log/celery-worker.log
  stderr_logfile=/var/log/celery-worker.log
  autostart=true
  autorestart=true
  startsecs=10

  ; Need to wait for currently executing tasks to finish at shutdown.
  ; Increase this if you have very long running tasks.
  stopwaitsecs = 600

  ; When resorting to send SIGKILL to the program to terminate it
  ; send SIGKILL to its whole process group instead,
  ; taking care of its children as well.
  killasgroup=true

  ; if rabbitmq is supervised, set its priority higher
  ; so it starts first
  priority=998

  environment=PYTHONPATH="/opt/python/current/app/:",PATH="/opt/python/run/venv/bin/:%%(ENV_PATH)s",RDS_PORT="5432",RDS_DB_NAME="ebdb",RDS_USERNAME="foobar",PYCURL_SSL_LIBRARY="nss",DJANGO_SETTINGS_MODULE="raiseflags.settings",RDS_PASSWORD="foobar",RDS_HOSTNAME="something.something.eu-west-1.rds.amazonaws.com"

  [program:celeryd-beat]
  ; Set full path to celery program if using virtualenv
  command=/opt/python/run/venv/bin/celery beat -A raiseflags --loglevel=INFO --workdir=/tmp -S django --pidfile /tmp/celerybeat.pid

  directory=/opt/python/current/app
  user=nobody
  numprocs=1
  stdout_logfile=/var/log/celery-beat.log
  stderr_logfile=/var/log/celery-beat.log
  autostart=true
  autorestart=true
  startsecs=10

  ; Need to wait for currently executing tasks to finish at shutdown.
  ; Increase this if you have very long running tasks.
  stopwaitsecs = 600

  ; When resorting to send SIGKILL to the program to terminate it
  ; send SIGKILL to its whole process group instead,
  ; taking care of its children as well.
  killasgroup=true

  ; if rabbitmq is supervised, set its priority higher
  ; so it starts first
  priority=998

  environment=PYTHONPATH="/opt/python/current/app/:",PATH="/opt/python/run/venv/bin/:%%(ENV_PATH)s",RDS_PORT="5432",RDS_DB_NAME="ebdb",RDS_USERNAME="puigdemontAWS",PYCURL_SSL_LIBRARY="nss",DJANGO_SETTINGS_MODULE="raiseflags.settings",RDS_PASSWORD="holahola",RDS_HOSTNAME="aa1m59206y4fljn.cdreg3t50bbl.eu-west-1.rds.amazonaws.com"
  No config updates to processes
  celeryd-beat: ERROR (not running)
  celeryd-beat: ERROR (abnormal termination)
  celeryd-worker: ERROR (not running)
  celeryd-worker: ERROR (abnormal termination)
[2019-01-26T09:13:00.583Z] INFO  [25247] - [Application update app-190126_161213@43/AppDeployStage1/AppDeployPostHook] : Completed activity. Result:
  Successfully execute hooks in directory /opt/elasticbeanstalk/hooks/appdeploy/post.
[2019-01-26T09:13:00.583Z] INFO  [25247] - [Application update app-190126_161213@43/AppDeployStage1] : Completed activity. Result:
  Application version switch - Command CMD-AppDeploy stage 1 completed
[2019-01-26T09:13:00.583Z] INFO  [25247] - [Application update app-190126_161213@43/AddonsAfter] : Starting activity...
[2019-01-26T09:13:00.583Z] INFO  [25247] - [Application update app-190126_161213@43/AddonsAfter/ConfigLogRotation] : Starting activity...
[2019-01-26T09:13:00.583Z] INFO  [25247] - [Application update app-190126_161213@43/AddonsAfter/ConfigLogRotation/10-config.sh] : Starting activity...
[2019-01-26T09:13:00.756Z] INFO  [25247] - [Application update app-190126_161213@43/AddonsAfter/ConfigLogRotation/10-config.sh] : Completed activity. Result:
  Disabled forced hourly log rotation.
[2019-01-26T09:13:00.756Z] INFO  [25247] - [Application update app-190126_161213@43/AddonsAfter/ConfigLogRotation] : Completed activity. Result:
  Successfully execute hooks in directory /opt/elasticbeanstalk/addons/logpublish/hooks/config.

Я надеваюне знаю, связано ли это с ошибкой, но обратите внимание, что над строкой [[PATH = "/ opt / python / run / venv / bin /: %% (ENV_PATH) s"]] -> не следуетENV_PATH что-то еще?:

environment=PYTHONPATH="/opt/python/current/app/:",PATH="/opt/python/run/venv/bin/:%%(ENV_PATH)s",RDS_PORT="5432",RDS_DB_NAME="ebdb",RDS_USERNAME="foobar",PYCURL_SSL_LIBRARY="nss",DJANGO_SETTINGS_MODULE="raiseflags.settings",RDS_PASSWORD="foobar",RDS_HOSTNAME="something.something.eu-west-1.rds.amazonaws.com"

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

Кроме того, я не уверен, если я 'используя правильный путь "celery_configuration.txt".Единственное, что я отредактировал, было 2 места, где написано «django_app», которое я изменил на «повысить флажки» (название моего проекта django).Это правильно?

Кто-нибудь знает, как это решить?Я могу вставить свои файлы, если это необходимо, но они такие же, как те, которые указаны в первой ссылке.Я использую Windows.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Хорошо, проблема не имеет ничего общего со строкой PATH, о которой я говорил. Мне просто нужно было добавить 'django_celery_beat' и 'django_celery_results' в INSTALLED_APPS в моих settings.py

Ошибка подключения, о которой я позже говорил, разговаривая с Фран, была вызвана тем, что мне нужно было установить BROKER_URL вместо CELERY_BROKER_URL, также в файле settings.py. Я думаю, это было связано со мной, не указав 'CELERY' в качестве пространства имен в app.autodiscover_tasks () в файле celery.py (хотя в связанном вопросе они делают это, я не сделал это, потому что я использовал другой версия сельдерея).

Спасибо Фрэн за все, особенно за указание, что я должен просмотреть журналы ошибок сельдерея. Я не знал, как это сделать. Если любой другой любитель также испытывает трудности, знайте, что вам нужно «eb ssh» для вашего экземпляра, а затем «tail -n 40 /var/log/celery-worker.log» и «» tail -n 40 / var / log / celery-beat.log "(где" 40 "- это количество строк, которые вы хотите прочитать). Я знаю, это звучит очевидно для многих людей, но, глупый я, я понятия не имел.

(кстати, я все еще борюсь с проблемой с работником сельдерея, который не может найти модуль pycurl, но это не имеет никакого отношения к этому вопросу).

0 голосов
/ 26 января 2019

Ссылаясь на указанную вами строку, где появляется environment=PYTHONPATH="/opt/python/current/app/:",PATH="/opt/python/run/venv/bin/:%%(ENV_PATH)s",RDS_PORT="5432",RDS_DB_NAME="ebdb",RDS_USERNAME="foobar",PYCURL_SSL_LIBRARY="nss",DJANGO_SETTINGS_MODULE="raiseflags.settings",RDS_PASSWORD="foobar",RDS_HOSTNAME="something.something.eu-west-1.rds.amazonaws.com", копируете ли вы эту строку откуда-то?Потому что я не вижу его в ссылке, которую вы разместили.В связанном ответе было environment=$celeryenv, где $celeryenv было определено как

celeryenv=`cat /opt/python/current/env | tr '\n' ',' | sed 's/export //g' | sed 's/$PATH/%(ENV_PATH)s/g' | sed 's/$PYTHONPATH//g' | sed 's/$LD_LIBRARY_PATH//g' | sed 's/%/%%/g'`
celeryenv=${celeryenv%?}```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...