问题标签 [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 投票
1 回答
2226 浏览

python - 如何在 Python 中正确捕获和处理 RQ 超时?

试图找到一种捕捉RQ作业超时的好方法,以便在超时后重新排队。

基本上,正确的解决方案将提供一种方法(例如,worker 中的异常处理程序或类似的东西)来重新排队超时的作业。此外,如果作业返回failed队列,这也是一个很好的答案。

非常感谢!任何帮助将不胜感激!

0 投票
1 回答
178 浏览

python - 如何禁用 Python RQ 作业的 SyntaxWarning?

试图避免让RQmeta显示关于使用字典进行任意属性使用的警告消息(向控制台) 。我们按照指定使用它,并且警告继续显示。

显示的警告如下:

基本上,这很烦人,因为它会干扰正常的调试活动。

关于如何禁用此功能的任何想法?

0 投票
2 回答
2456 浏览

python - 如何在 django start 上启动 redis queue worker?

我决定我需要使用异步队列系统。我正在设置 Redis/RQ/django-rq。我想知道如何在我的项目中开始工作。

django-rq 提供了一个很棒的管理命令,它看起来像:

但是当你启动 django 实例时是否可以启动 worker?只是想知道还是我总是必须手动启动?

谢谢。

0 投票
1 回答
699 浏览

python-rq - 在 RQ 工作人员中重用实例?

我有一门课可以为我进行复杂的计算。实际计算不会花那么长时间,但获取一个类的实例大约需要一秒钟。(它读入一堆大型数据文件。)

有没有一种方法可以创建此类的实例,然后让我的 RQ 工作人员重新使用它,而不必为我执行的每个作业重新初始化它?

0 投票
3 回答
2778 浏览

python - 使用 python-rq 在远程服务器上执行长任务

我已经编写了一些需要很长时间才能执行(2-3 天)的代码,我想将它推送到服务器上以便在那里执行。代码中包含大量相互交互的类和函数,但最终整个代码的执行是通过单个函数 (test2) 完成的,这将使其正常工作。我发现对我来说一个解决方案可能是任务队列,因为我不需要同时执行多个任务,我发现 RQ 可能适合我的需要。

我已经在远程服务器上设置了 Reddis。以守护程序模式运行它。比我写了一个简单的模块,它应该把我的 test2 函数放在一个队列中。

然后我遇到了一个问题:在 python-rq 文档网页(http://python-rq.org/docs/workers/)上,所描述的启动工作人员的方法是执行

从壳。但是这个工人不是作为一个守护进程开始的,因此当我连接到这个远程服务器时,我的应用程序是通过 ssh 设置的,如果我的 ssh 连接断开,工人也会断开,这不是我想要的行为具有。在我的代码执行时将 ssh 连接保持 2-3 天,在我的情况下拒绝了除了使用 python-rq 之外的整个逻辑。有没有办法解决这个问题?也许不应该从 shell 启动一个 python-rq worker 来进行守护进程?

0 投票
1 回答
2808 浏览

python - AttributeError:类型对象“YourClassHere”没有属性“rsplit”

我正在使用django-rqdjango 绑定python-rq来尝试异步生成 PDF。该类TemplateProcesser使用两个参数进行初始化,并在函数中自动生成 PDF __init__。这可以在 之外同步正常工作django-rq,但是django-rq会因以下错误而失败:

错误:

从这个电话:

关于如何正确包含未实例化的类的任何想法django-rq

班级:

堆栈跟踪:

超孔径回答后的回溯:

0 投票
2 回答
3713 浏览

python - Python RQ:回调模式

我现在有大量文档要处理,并且正在使用 Python RQ 来并行化任务。

我希望在每个文档上执行不同的操作时完成一系列工作。例如:A-> B->C表示将文档传递给 function AA完成后,继续执行B和 last C

然而,Python RQ 似乎并不能很好地支持管道的东西。

这是一个简单但有点脏的做法。总之,流水线中的每个函数都以嵌套方式调用其下一个函数。

例如,对于管道A-> B-> C

在顶层,一些代码是这样编写的:

q.enqueue(A, the_doc)

其中 q 是Queue实例,在函数A中有如下代码:

q.enqueue(B, the_doc)

在 中B,有这样的东西:

q.enqueue(C, the_doc)

还有比这更优雅的方法吗?例如ONE函数中的一些代码:

q.enqueue(A, the_doc) q.enqueue(B, the_doc, after = A) q.enqueue(C, the_doc, after= B)

depends_on参数是最接近我要求的参数,但是,运行类似:

A_job = q.enqueue(A, the_doc) q.enqueue(B, depends_on=A_job )

不会工作。Asq.enqueue(B, depends_on=A_job )在执行后立即A_job = q.enqueue(A, the_doc)执行。当 B 入队时,来自 A 的结果可能还没有准备好,因为它需要时间来处理。

PS:

如果 Python RQ 在这方面不是很擅长,我可以使用 Python 中的其他工具来实现相同的目的:

  1. 循环并行化
  2. 管道处理支持
0 投票
7 回答
21373 浏览

python - RQ - 清空和删除队列

我正在使用RQ,并且我有一个failed包含数千个项目的队列,以及test我为测试创建的另一个队列,该队列现在是空的且未使用。我想知道如何从failed队列中删除所有作业,并完全删除test队列?

为基本问题道歉,但我在RQ 文档中找不到这方面的信息,而且我对Redis和 RQ都是全新的......提前致谢!

0 投票
1 回答
1687 浏览

python - 以编程方式销毁/删除 Redis Queue (rq) 中的 Queue()

鉴于:

我想以编程方式删除名为“昨天”的队列

0 投票
2 回答
1523 浏览

python - 当 results_ttl=0 时,Redis 仍然会填满,为什么?

问题:如果作业的结果立即丢弃,为什么redis会填满?

我使用 redis 作为队列来异步创建 PDF,然后将结果保存到我的数据库中。由于它已保存,我不需要在以后访问该对象,因此我不需要在处理结果后将结果存储在 Redis 中。

为了防止结果留在redis中,我将其设置TTL0

问题是尽管 redis 工作人员说作业立即到期:

Redis 仍然填满并抛出:

如果作业结果尚未存储,我是否需要在 redis / django-rq 中设置另一个参数以防止 redis 被填满?


更新:

在这篇文章之后,我预计内存可能会因为 redis 中的失败作业而被填满。

使用此代码段:

这是 redis 中密钥转储的粘贴箱:

http://pastebin.com/Bc4bRyRR

太长了,不实用在这里发帖。它的大小似乎支持我的理论。但是使用:

不会像我期望的那样清除redis。如何更准确地转储 redis 中的键?我是否正确清除作业?