В каком Docker-контейнере должна быть действительная функция задания для RQ, обслуживающего веб-приложение? - PullRequest
0 голосов
/ 24 июня 2018

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

На данный момент у меня есть 3 «контейнера» докера, не считая БД MySQL, которая обслуживает веб-приложение.(1) веб-приложение DjangoREST, (2) Redis-сервер и (3) Rq-Worker

Мой план состоял в том, чтобы веб-приложение поставило в очередь задачу для Rq-Worker, но API для RQтребует, чтобы я указывал фактическую функцию в качестве параметра .enqueue (), а не только ее имя.Это заставило меня задуматься, так как у меня есть функция в базе кода для контейнера Rq-Worker.Могу ли я поместить задачи в очередь, просто записав их непосредственно в базу данных Redis без использования RQ API?Нужен ли прослушиватель в контейнере Rq-Worker, который прослушивает соединения, поступающие из веб-приложения, и предоставляет прокси для .enqueue (), чтобы веб-приложение могло сообщать контейнеру Rq-Worker, что делать .enqueue?

Если бы я просто поставил функцию в очередь из моего веб-приложения, и RQ велит работнику запустить ее, должна ли эта функция запускаться в том же контейнере, что и мое веб-приложение?Если я продублирую код для функции, чтобы он присутствовал в обоих контейнерах, это будет работать?Спасибо за любое руководство здесь.

...