问题标签 [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 - 在 Django 中测试 django-rq ( python-rq ) 的最佳实践
我将开始在我的项目中使用 django-rq。
Django 与 RQ 集成,这是一个基于 Redis 的 Python 队列库。
测试使用 RQ 的 django 应用程序的最佳实践是什么?
例如,如果我想将我的应用程序作为黑盒进行测试,在用户执行一些操作后,我想执行当前队列中的所有作业,然后检查我的数据库中的所有结果。我怎样才能在我的 django-tests 中做到这一点?
python - redis redis.client rq 队列 job.result # => None
我试图弄清楚 rq 使用 redis 排队。我有简单的 test_job 函数,我想在队列中使用它。
脚本主要取自 rq 文档:
问题是我没有离开while循环。job.result 仍然没有。但是,根据日志,redis 连接似乎有效:
python - 在 Python-RQ 中减少机器上的工人数量?
在 Python-RQ 中减少机器上工作人员数量的好方法是什么?
根据文档,我需要向机器上的一个工作进程发送一个 SIGINT 或 SIGTERM 命令:
打倒工人
如果在任何时候,worker 收到
SIGINT
(via Ctrl+C) 或SIGTERM
(viakill
),worker 会等到当前运行的任务完成,停止工作循环并优雅地注册自己的死亡。如果在此删除阶段
SIGINT
或SIGTERM
再次收到,worker 将强制终止子进程(发送它SIGKILL
),但仍会尝试注册自己的死亡。
这似乎意味着大量的编码开销:
- 需要跟踪工作进程的 PID
- 需要有一种从远程机器发送 SIGINT 命令的方法
我真的需要自定义构建这个吗,或者有没有办法使用 Python-RQ 库或其他一些现有的库轻松地做到这一点?
python - Python RQ 的作业推送性能不理想
尝试使用python-rq
支持我们的 Web 应用程序的后端,但推送新作业需要很长时间 - 最多 12 秒。
执行enqueue_call
函数调用时会发生性能下降,特别是当连接到系统的工作进程数量增加(超过 200 个)时。
系统工作如下:
- 前端将作业推送到任务队列服务器。
enqueue_call
除了要执行的函数的实际参数之外,这还使用函数将参数传递给作业(例如超时和 ttl)。 - 多个进程(分布在多台机器上)正在运行工作人员,每个工作人员都在 UNIX 下
screen
。工作人员遵循文档中提供的模式,执行Worker.work()
无限循环函数来监听队列。 - 在处理过程中,一些任务会产生新的任务,通常在它们正在运行的同一个队列中。
关于基础设施:
- 运行此任务队列的 Redis 服务器专用于它。此外,持久性被禁用。它在 4 GB Rackspace 服务器上运行。
- 在带有任务队列的服务器上运行
redis-benchmark
时,大多数基准测试的平均结果超过 20000 r/s。
在这种情况下,我们如何提高新工作的推送性能?我们应该使用更好的模式吗?
python - 使用 Python-RQ 检查之前的结果是否已经存在
我正在使用Python-RQ创建一个工作,当你创建一个工作时你会得到一个 job.id:
f311ae30-b623-4b38-9dcb-0edd0133a6e6
然后我用那个id来检查结果是否完成,这很好。
然后将此结果缓存(500 秒)。
现在,这就是我感到困惑的地方。
当另一个请求在 500 秒的时间范围内以相同的输入集出现时:
如何取回该作业的缓存结果与创建另一个作业。
我的问题是 job.id 是一些哈希,包括时间戳等,所以我不确定如何在 redis 中查找结果。
我到处搜索过,但没有在任何地方看到此文档,以便在不创建新作业的情况下利用缓存结果的最佳方式。
python - 取消 Python RQ 中已经执行的任务?
我正在使用http://python-rq.org/在 Heroku 工作人员测功机上排队和执行任务。这些是长时间运行的任务,有时我需要在执行过程中取消它们。我如何从 Python 中做到这一点?
稍后在一个单独的过程中我想做:
谢谢!
django - Django python-rq -- DatabaseError SSL错误:解密失败或坏记录mac
我正在使用 django-redis 和 django_rq 框架来支持我在 Heroku 上的 Django 应用程序的 redis 缓存和 redis 后台任务处理。过去它运行得很顺利,但是现在我DatabaseError SSL error: decryption failed or bad record mac
每次运行我的一项工作时都会得到一个。
我在https://devcenter.heroku.com/articles/postgres-logs-errors文章中读到 Postgres 经常发生此错误 ,但它并没有真正为我的 python 设置提供任何有用的东西。
django - 如何从队列中清除 Django RQ 作业?
我觉得问起来有点愚蠢,但它似乎不在RQ 的文档中。我有一个包含数千个项目的“失败”队列,我想使用 Django 管理界面清除它。管理界面列出了它们并允许我单独删除和重新排队它们,但我不敢相信我必须潜入 django shell 才能批量执行。
我错过了什么?
python - python rq队列导入错误
我正在使用 python v2.7.3 - 通过 easy_install 安装了 python-rq。在尝试使用http://python-rq.org/中给出的步骤创建 RQ 队列时。它失败了,像这样的消息
这里有什么问题以及如何解决这个问题?