Skip to content

Migration to Celery RabbitMQ#456

Open
Alexei217 wants to merge 14 commits intomasterfrom
migration_to_Celery_RabbitMQ
Open

Migration to Celery RabbitMQ#456
Alexei217 wants to merge 14 commits intomasterfrom
migration_to_Celery_RabbitMQ

Conversation

@Alexei217
Copy link
Copy Markdown
Collaborator

No description provided.

Copy link
Copy Markdown
Collaborator

@HadronCollider HadronCollider left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. возьмите линтер с конфигом и поправьте свой код
  2. добавьте в логи контекст проверок (тренировка, задача/этап и пр.) - чтобы не добавлять каждый раз в training_id={training_id} и пр. отладочные данные
  1. если открываете порты каких-то контейнеров
  • не используйте стандартный порт (на сервере / у меня / где-то ещё) они уже могут быть заняты - как минимум, добавьте возможность их изменить (через .env)
  • добавляйте "127.0.0.1", чтобы доступ был только с докера / локальной машины (на некоторых серверах могут быть открыты эти порты -> к вам могут попасть)

)
TrainingsDBManager().set_score(training_id, 0)

raise
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread app/celery_app.py
config_path = os.environ.get("APP_CONF")
if not config_path:
raise RuntimeError("APP_CONF environment variable is not set")
Config.init_config(config_path)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Заведите отдельный celeryconfig для задач - чтобы не мешаться с env и переменными для других контейнеров

Comment thread app/celery_app.py
),
]

celery_app = Celery(
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

опять же про конфиг (чтобы не прописывать тут всё вручную)

Comment thread app/mongo_odm.py
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А в чем смысл этих изменений?

В том числе с submit_scores_for_passback (это вроде отправка оценок к мудл)

Comment thread app_conf/testing.ini
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

перенесите конфиги из *.ini в *.py

т.е. разделы и переменные из *.ini

[cacher]
url=http://cacher:7777/

[mongodb]
connect_url=mongodb://mongo:27017/database

превратить в переменные в *.py

# cacher
CACHER_URL = 'http://cacher:7777/'

# mongodb section
MONGODB_CONNECT_URL = "mongodb://mongo:27017/database"

Чтобы такой конфиг использовался в коде как старый (чтобы не менять логику)
https://github.com/OSLL/web_speech_trainer/blob/dev/app/config.py нужно заменить на приложенный

config.py

Так можно будет формировать конфиг, беря нужные переменные из .env


celery_worker_audio_rec:
image: wst-image:v0.2
command: celery -A app.celery_app worker --loglevel=info --concurrency=1 -Q audio_recognition
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вынесите concurrency в обсуждаемый выше celeryconfig (причем для каждой очереди/обработчика свой)

environment:
- APP_CONF=${APP_CONF}
volumes:
- nltk_data:/root/nltk_data
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а зачем nltk в контейнере по обработке результатов тренировок?

networks:
wst_network:
external: true
name: web_speech_trainer_network No newline at end of file
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. все названия от docker compose (сети, тома, контейнеры и пр.) зависят от названия проекта (по умолчанию - название родительской папки) - запусти мы её в другой папке (или установив project-name), все сломается, т.к. имена захардкожены
  • если volumes.nltk_data используется только тут - вроде бы external ему не нужно
  1. если не ошибаюсь, при запуске docker compose -f docker-compose.workers.yml -f docker-compose.yml ... - все контейнеры будут в одной сети, т.е. нет необходимости в подобном (ещё и хардкоде)

  2. кроме того, кажется, что сеть (в общем случае) вообще не нужна - мы даем url для подключения к rabbit/redis и вроде как этого достаточно

Comment thread docker-compose.yml
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

см комментарии к docker-compose.workers.yml

ports:
- "5555:5555"
environment:
- APP_CONF=${APP_CONF}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для чего flower app conf?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants