问题标签 [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 回答
1513 浏览

python-2.7 - python-rq worker 自动关闭

我正在实现 python-rq 以在队列中传递域并使用 Beautiful Soup 抓取它。所以我正在运行多个工人来完成工作。到目前为止,我启动了 22 个工作人员,所有 22 个工作人员都在 rq 仪表板中注册。但是一段时间后,工作人员会自行停止并且不会显示在仪表板中。但在 webmin 中,它会将所有工作人员显示为正在运行。爬行的速度也降低了,即工人没有跑步。我尝试使用主管和 nohup 运行工作人员。在这两种情况下,工人都会自行停止。

这是什么原因?为什么工人会自己停下来?我们可以在单个服务器中启动多少个工作人员?

除此之外,每当一个工作人员从 rq 仪表板中注销时,失败的计数就会增加。我不明白为什么?

请帮我解决一下这个。谢谢你

0 投票
2 回答
1498 浏览

python-3.x - python-rq 作业没有超时

有没有办法为工作人员指定“最大”= inf 超时?我有一些长期运行的任务,如果由于超时而失败,我会在工作人员内部处理它。

可以通过cli指定吗?

0 投票
1 回答
882 浏览

python - RQ Timeout 不会杀死多线程作业

我在使用 python RQ 运行多线程任务时遇到问题(在 v0.5.6 和 v0.6.0 上测试)。

考虑以下代码,作为我想要实现的简化版本:

东西.py

主文件

执行时main.py(当 rqworker 在后台运行时),作业在 5 秒内按超时中断。

问题是,当我设置一个包含线程/s 的任务时MyThing().hello_task,线程永远运行,当 5 秒超时结束时没有任何反应。

如何使用 RQ 运行多线程任务,这样超时会杀死任务、它的儿子、孙子和他们的妻子?

0 投票
1 回答
134 浏览

python - 使用 python-rq 配置为每分钟仅执行 30 个任务

我正在构建一个分布式爬虫机制,并希望确保一分钟内向服务器发出的请求不超过 30 个。每个入队的任务都会发出一个请求。

所有任务都在 redis 中入队,并使用python-rq提供的 api 出队。

方法是在redis中设置一个每分钟过期的key,用来保存发送的请求数。

每次有工作可用时,检查发送的请求是否 < 30 - 如果没有,则只需休眠一分钟 - 如果是,则工作


以下是我的自定义工作者:

这似乎不起作用,因为尽管工作人员以通常的速度执行任务,而且设置的键的值也不会更新超过 3。

我有一种强烈的感觉,我的思维过程是有缺陷的。我在这里做错了什么?

谢谢

0 投票
2 回答
2352 浏览

python - 在应用程序启动时运行 python-rq 工作进程

我在 Heroku 上托管了我的 Django 应用程序,但由于一些限制,我从 Heroku 转移到了基于云的服务器。我按照本教程在 Python 中运行后台任务。一切都运行良好,除了我必须手动运行python worker.py才能启动工作进程。

在 Heroku 上,我们可以在应用程序启动时使用 Procfile 来运行进程,但现在我在运行 ubuntu 14.04 的基于云的服务器上。那么 Procfile 的替代方案是什么?

工人.py

0 投票
1 回答
212 浏览

python - 无法从工作人员访问文件,但在视图中工作 - [Errno 2] 没有这样的文件或目录

我已按照https://devcenter.heroku.com/articles/python-rq上的教程进行操作

假设我有一个函数可以将 PDF 文件转换为 JPG 并将它们存储在应用程序的 tmp/file/ 中,然后将其上传到 S3。

但是,由于 Heroku 上的请求超时时间为 30 秒,我无法将其放入视图中,因此我决定使用后台工作人员来执行任务。因此,我将代码移至任务中,但工作人员无法找到正确的路径。

[Errno 2] No such file or directory. 我尝试打印没有运气,但我可以在函数中打印。

我尝试调用的函数在任务中给出了一个空字符串,但在视图中给出了正确的值是sorted(os.listdir('tmp/file/')

我四处搜索并认为可能 PYTHONPATH 变量可能是错误的,但一切都通过 manage.py

我的 worker.py 看起来像这样。

我的 manage.py 看起来像这样。

0 投票
1 回答
1546 浏览

python - Python Flask:由于环境变量,RQ Worker 引发 KeyError

我正在尝试设置一个 redis 队列和一个工作人员来使用我的烧瓶应用程序处理队列。我正在实现这个来处理发送电子邮件的任务。我有点困惑,因为堆栈跟踪似乎在说我的“APP_SETTINGS”环境变量实际上没有设置。

在启动应用程序、redis 或 worker 之前,我设置了 APP_SETTINGS:

但是,当一个项目被添加到队列中时,堆栈跟踪如下:

电子邮件.py

工人.py

我真的很感激另一组对此的看法。我一生都无法弄清楚这里发生了什么。

0 投票
0 回答
88 浏览

asynchronous - 异步运行永远不会同时运行的任务

我想知道是否有一种异步运行任务的方法将在后台运行(例如使用 Celery),它永远不会同时运行?

这意味着,每个任务都可以与自己同时运行,但不能与干扰第一个任务操作的其他任务一起运行。
例如,

  • 任务 A:从文件中读取(可以与其自身同时运行(与其他从文件中读取的任务)
  • 任务 B:写入文件(不应与读取任务(与任务 A)同时运行)

本质上,我需要的是让任务 A 和 B 找出另一个任务是否正在运行以及是否正在运行的方法,然后自行延迟并等待它完成(可能会阻塞任务队列)

为任务定义队列是否可以解决问题?或者它只是一个用于执行任务的队列(因此​​它将执行队列中的第二个任务而不等待第一个任务的结果)?

在这里使用是我唯一的解决方案吗?

如果锁定解决方案是唯一的,那么正确的实现方法是什么?
我发现了这一点: 确保一次只执行一个任务
但它使用 django 的缓存作为锁,我没有在 django 环境中运行我的程序,所以它对我不起作用。

0 投票
1 回答
3026 浏览

python - 如何从代码中读取失败队列(rq)的回溯?

我在失败的队列中有 1 个失败的作业。

正如@Byron Ruth回答的那样,我可以这样得到这个数字:

在 rq-dashboard 上,我看到了回溯:

如何使用 Python 代码获取此回溯?如果这是不可能的,任何程序化的解决方案都是可以接受的(例如通过 Bash)。

0 投票
1 回答
1652 浏览

python - 从 Python-RQ / Redis 中删除队列

我正在使用 Python RQ(由 Redis 支持)将任务提供给一堆工作进程。

在将作业添加到队列时,我不小心发送了一个元组,所以现在我有这样的队列:

我似乎无法弄清楚如何摆脱('low',)队列。由于其名称,队列似乎也引起了一些问题(例如,我无法在 rq-dashboard 中查看或清除它,因为页面将拒绝加载)。

这里有一些讨论:RQ - Empty & Delete Queues,但这仅涉及清空队列。我可以在 Python 中很好地清空队列,但我似乎无法真正从 Redis 服务器中删除队列。

RQ 文档似乎没有提供有关摆脱您不想要的队列的任何信息。

我想实际删除该队列(不仅仅是清空它),而不是永远携带它。