问题标签 [python-rq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 高 SQLAlchemy 初始化开销
我们目前正在使用 Flask RQ 和 Flask SQLAlchemy 并遇到一些性能问题。这是我们的高级架构:
- API端点被命中
- 耗时的任务排队进入 RQ
- RQ worker fork 一个新进程来执行工作
- 该作业通常包括通过 Flask SQLAlchemy 进行的数据库查询 + 附加处理
在使用 cProfile 查看 (4) 的性能时,我看到
和
我看到很多时间都花在 SQLAlchemy 上。我假设这是将 SQL 数据映射到 ORM 对象的一些开销。所以,我有两个问题:
- 初始化 SQL-ORM 映射所花费的时间是预期的吗?我在 AWS xlarge 实例上以 70% 的 CPU 运行。
lazy='dynamic'
根据 pg_stat_statements,我所有的关系都是使用动态加载的,相应的查询需要 < 10 毫秒。 - 假设没有办法解决(1),另一种避免持续开销的方法是有一个这样的队列。因此,不是为每个作业派生一个新进程,而是直接在线程中运行该作业。这对于分布式系统是否可取?我找不到这样做的框架,所以也许这不是一个好主意?
最后一点,如果我很愚蠢并且没有看到明显的解决方案,请告诉我!
python - Python rq 包中的队列类、工作者类、作业类是什么
在阅读rq
文档时,我注意到rq worker
在启动 worker 时可以传递一些参数
例子:
参数列表包括
--worker-class
或-w
:要使用的 RQ Worker 类(例如 rq worker --worker-class 'foo.bar.MyWorker')--job-class
或-j
:要使用的 RQ 作业类。--queue-class
:要使用的 RQ Queue 类。
什么是工人类、作业类和队列类,你什么时候使用它们?
docker - 哪个 docker 容器应该具有为 Web 应用程序服务的 RQ 的实际工作功能?
我有一个 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 告诉工作人员运行它,那么该函数是否必须与我的网络应用程序在同一个容器中运行?如果我复制该函数的代码以便它同时存在于两个容器中,这会起作用吗?感谢您在这里的任何指导。
python - python-rq - 我如何等待整个队列被处理?
我将几个作业排入rq.Queue
队列并希望等待(不是忙等待),直到队列为空并且所有作业都已处理。有这样的活动要听吗?
python - python-rq Queue.job_ids 总是空的
我的 rq 任务运行正常,但获得所有工作的功能都不起作用——
示例任务非常基础——
可能出了什么问题?顺便说一句,这是在 Ubuntu 18.04 下
python - 使用 python-rq 调度另一个 redis 作业的 redis 作业
我有两种工作:一种是我想串行运行的,另一种是我想并行运行的。但是,我希望并行作业以串行方式安排(如果您仍在关注)。那是:
- 做A。
- 等待A,做B。
- 等待 B,同时做 2+ 个版本的 C。
我认为它有 2 个 redis 队列,一个只有一个工作人员的 serial_queue。还有一个 parallel_queue,上面有多个工人。
但是这个设置目前给出的错误是
AttributeError: module '__main__' has no attribute 'schedule_fetch_tweets'
. 如何正确打包此功能python-rq
?
python - Python Redis Queue (rq) - 如何避免为每个作业预加载 ML 模型?
我想使用 rq 对我的 ml 预测进行排队。示例代码(伪ish):
predict.py
:
app.py
:
worker.py
:
我已经阅读了 rq 文档,解释说您可以预加载库以避免每次运行作业时都导入它们(因此在示例代码中,我在工作代码中导入 tensorflow)。但是,我还想移动模型加载,predict_stuff
以避免每次工作人员运行作业时加载模型。我该怎么办?
python-rq - 如何获取有关在远程 redis 上工作的 rq 工作人员的信息
我正在尝试运行该rq info
命令,但我想获取远程 redis 机器上的信息。如何指定redis机器的url?
redis - RQ Redis:连接成功后连接被拒绝
我的 redis 服务器在 ubuntu 16.04 下运行,并且我运行 RQ Dashboard 来监控队列。redis 服务器有一个我为初始连接提供的密码。这是我的代码:
我试过删除密码并在 redis.conf 中启用 unixsocket——似乎都没有帮助。这似乎发生在某种超时中,因为在其他测试中,工作人员实际上加载了一个任务并在最终死于此错误之前执行它。
django - 在 docker 微服务设置中运行 django rq 的正确方法
我猜我的 docker 容器设置有点糟糕。因为每次我从 django 运行任务时,我都会在 docker 容器输出中看到ps aux
创建了新进程python mange.py rqworker mail
而不是使用现有进程。请参阅截屏视频:https ://imgur.com/a/HxUjzJ5
在我的 docker compose for rq worker 容器中执行的过程command
如下所示。
我是 docker 新手,有点想知道这是在没有 deamonization 的情况下像这样开始的......但这是一种 dockerish 的做事方式,对吗?