4

我有一个 DjangoREST Web 应用程序,它必须不时对长时间运行的任务进行排队。我试图找出划分职责的最佳方法。

目前,我有 3 个 docker “容器”,不包括为 Web 应用程序提供服务的 MySQL 数据库。(1) DjangoREST Web 应用程序,(2) Redis-server,和 (3) Rq-Worker

我的计划是让网络应用程序为 Rq-Worker 排队一个任务,但 RQ 的 API 要求我提供实际函数作为 .enqueue() 的参数,而不仅仅是它的名称。这让我停下来,因为我已经在 Rq-Worker 容器的代码库中找到了这个函数。我可以通过简单地直接写入 Redis DB 而不使用 RQ API 来将任务放在队列中吗?我是否需要 Rq-Worker 容器中的侦听器来侦听来自 web-app 的连接并为 .enqueue() 提供代理,以便 web-app 可以告诉 Rq-Worker 容器要 .enqueue 什么?

如果我只是从我的网络应用程序中排队一个函数,并且 RQ 告诉工作人员运行它,那么该函数是否必须与我的网络应用程序在同一个容器中运行?如果我复制该函数的代码以便它同时存在于两个容器中,这会起作用吗?感谢您在这里的任何指导。

4

0 回答 0