问题标签 [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.

0 投票
2 回答
1184 浏览

python - 大内存 Python 后台作业

我正在运行一个 Flask 服务器,它将数据加载到 MongoDB 数据库中。由于数据量很大,而且这需要很长时间,我想通过后台作业来完成。

我使用 Redis 作为消息代理和 Python-rq 来实现作业队列。所有代码都在 Heroku 上运行。

据我了解,python-rq 使用 pickle 序列化要执行的函数,包括参数,并将其与其他值一起添加到 Redis 哈希值。

由于参数包含要保存到数据库的信息,它非常大(~50MB),当它被序列化并保存到 Redis 时,不仅需要大量时间,而且还消耗大量内存。Heroku 上的 Redis 计划仅 100MB 的费用为每分钟 30 美元。事实上,我经常遇到 OOM 错误,例如:

OOM command not allowed when used memory > 'maxmemory'.

我有两个问题:

  1. python-rq 是否非常适合这项任务,还是 Celery 的 JSON 序列化更合适?
  2. 有没有办法不序列化参数而是引用它?

非常感谢您对最佳解决方案的想法!

0 投票
1 回答
105 浏览

django - Django-RQ + Braintree:提交结算

我已经阅读了这个 stackoverflow Q&A但它并没有解决我的问题。

在我的场景中,我submit_transaction_for_settlement(transaction_id)使用优秀的包将函数 () 推送到 redis 队列django-rq。此功能的工作是提交交易以进行结算。

在沙箱中,每当执行此功能时,我都会收到相同的错误:AttributeError: type object 'Configuration' has no attribute 'environment'.

我尝试了关于我的函数内部agf的建议instantiate a new gateway for each transaction,但没有奏效!

也许这与redis队列的环境或worker环境有关?

0 投票
1 回答
401 浏览

python - 让我在 python-rq 队列中的函数中的 python scikit 运行得更快?

我目前有一个utilities.py具有此机器学习功能的文件

然后我打电话给我app.py

阅读python-rq 性能说明后,它指出

您可以用来提高此类作业的吞吐量性能的一种模式是在分叉之前导入必要的模块。

然后我使worker.py文件看起来像这样

我遇到的问题是这仍然运行缓慢,是我做错了什么吗?当我检查一个单词时,有什么方法可以通过将所有内容存储在内存中来加快运行速度?根据我在 python-rq 中所做的 xpost看来我正在正确导入它

0 投票
1 回答
539 浏览

python - 同时运行 rqworker

我是 RQ 的新手,正在尝试将它用于将在后台运行的工作。我已经成功地设置了它,而且我还可以启动多个工人。

现在我正在尝试同时运行这些工作人员。我安装了主管并按照教程向其中添加程序,并且它有效。

这是我的主管配置:

工作函数存在于上述示例目录中。问题是即使在配置文件中将 numprocs 指定为 3 后,worker 也不会并行运行。

下面是一些截图,可以看出虽然已经启动了多个worker,但是它们并没有并行工作。

截图 [1] 截图 [2]

另外,我看到了这个 stackoverflow答案,但它仍然没有在工人之间划分工作!谁能告诉我这个配置有什么问题/我需要改变什么?

0 投票
2 回答
5828 浏览

python - python rq worker 并行执行任务

我不太了解python rq,我刚开始学习它。

有一个 task_a 需要 3 分钟才能完成处理。

据我观察,task_a 会从队列中一一执行。第一次通话结束后,继续进行下一次通话,以此类推。总时间为 3 分钟 x 3 = 9 分钟

如何使每个函数并行执行task_acall_3_times所以花费的时间少于 9 分钟,可能是 3 分 10 秒(只是一个例子,它可能会比这更快)。

可能我需要生成 3 个 rq 工作人员,是的,它确实工作得更快并且像并行一样。但是如果我需要调用它 2000 次怎么办。我应该产生 2000 个 rq 工人吗?我的意思是,必须有更好的方法来做到这一点。

0 投票
0 回答
1380 浏览

performance - Celery vs RQ 基准测试

由于芹菜的可靠性和调度存在问题,我们决定评估替代品。关于基本性能,我一直在努力在两个消息队列解决方案之间建立一个基准。

我目前的方法是在两个不同的队列上放置 1000 个任务(获取 nvie.com 并计算网站上的单词),并测量 4 celery(20 秒)与 4 rq 工人(70 秒)的速度。我的代码是https://github.com/swartchris8/celery-vs-rq-benchmark我正在通过命令行运行 celery,并通过 Mac 上的主管运行 rq,rq 的 Ubuntu 运行说明从 vagrant 文件中很清楚。

Celery 的表现要好得多,我不确定我测量队列清除速度的测试设置是否有缺陷,无法测量任务吞吐量。我还在使用默认的 RQ 工作人员,我怀疑这可能会慢得多。

我的方法是在吞吐量方面对两个消息队列系统进行基准测试的正确方法吗?你采取了哪些方法?celery 比 RQ 快那么多吗?

0 投票
1 回答
823 浏览

python - python-rq with flask + uwsgi + Nginx :我需要更多的 uwsgi 进程还是 redis 工作者?

我有一台具有上述配置的服务器,我正在处理长任务,但我必须通过 Firebase 向用户更新进程状态。为了立即响应客户端,我使用 python-rq 在 redis 中排队。

我正在使用烧瓶、uwsgi 和 Nginx。在 uwsgi conf 文件中,有一个字段询问进程数。我的问题是,我需要启动多个 uwsgi 进程还是更多的 redis 工作者?

启动更多的 uwsgi 工作人员会创建更多的 redis 工作人员吗?

缩放将如何工作,我的服务器有 1 个 vCPU 和 2GB 内存。我有用于生产的 aws 自动缩放。我是否应该运行更多的 uWsgi 工作人员以及只有一个队列的 redis 工作人员数量。

我正在独立启动工人。烧瓶应用程序正在导入连接并添加作业。

我的启动脚本

我的工人代码

0 投票
1 回答
6821 浏览

python - 从 python-rq 获取 *所有 * 当前工作

我正在使用 python-rq 来管理基于 Redis 的作业,并且我想确定我的工作人员当前正在处理哪些作业。

python-rq 提供了一个 get_current_job 函数来查找连接的“当前作业”,但是:

  1. 我无法让它工作,并且
  2. 我真的想要一个所有作业的列表,这些作业当前由该连接的所有队列上的所有工作人员处理,而不是一个队列中的一项作业。

这是我的代码(总是返回无):

有没有人有任何想法,请让上面的代码工作,但更重要的是,如何从这个连接的所有队列中的所有工作人员那里获取所有当前工作的列表?

0 投票
0 回答
76 浏览

python - python作业的任务调度程序

我有一个主要功能,我想用不同的参数执行。它是使用 omxplayer 在树莓派上播放视频的功能。我想使用调度程序来计划特定任务的执行,他们应该定义执行任务和/或创建队列的时间,如果我执行这个主函数,调度程序会将这个任务放在队列的末尾。

我已经尝试过 Python-RQ,它很好,但问题是如果我不知道以前工作的名称,我不知道如何在队列末尾添加新任务。

我有应该将作业添加到队列的功能。

执行:

你知道满足要求的调度器吗?你对 python rq 有什么建议?有什么办法可以一一做到吗?如何始终在队列末尾添加作业?

谢谢你。

0 投票
1 回答
2398 浏览

django - 使用主管启动 rqworker 会导致生成错误

尝试使用以下命令启动 rqworker,如其自述文件中所述:

出于某种原因,它给出了ERROR (spawn error)状态显示FATAL Exited too quickly (process log may have details)。日志中没有任何错误信息 ( exit status 1; not expected)。

我的主管配置:

直接从ubuntu用户运行命令按预期工作。