У меня есть веб-приложение 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 велит работнику запустить ее, должна ли эта функция запускаться в том же контейнере, что и мое веб-приложение?Если я продублирую код для функции, чтобы он присутствовал в обоих контейнерах, это будет работать?Спасибо за любое руководство здесь.