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

python - 作业仅在 redis cli 中可见,但未显示在 rq 仪表板中且未执行

我想使用 Redis 和 RQ 构建管道。我创建了一个工作人员、服务器和一个作业,工作人员正在运行并监听队列,服务器正在向队列分派作业,作业被分派,我打印作业 ID,在控制台中,我可以看到工作人员日志……在队列中接收作业。该作业永远不会执行,也永远不会显示在 rq 仪表板中,但我可以在 Redis CLI 中看到它。

我正在使用的版本:

rq==1.7.0

redis==3.5.0

这是我的代码:

run.py 中的工人

我在这里派了一份工作

这是后台工作

这是 rq-dashboard 的截图 在此处输入图像描述

这是工人的日志

这是来自 redis-cli 的日志

这是我的作文

我从来没有看到作业执行的日志,我尝试添加 TTL 和 TIMEOUT 但仍然面临同样的问题。

0 投票
0 回答
369 浏览

python - redis python3 rq worker因utcparse started_at date缺席而失败

我已经安装并运行了 redis(Redis version=6.0.9在 Ubuntu 18.04 机器上),并按照这个简单的指南来安排工作,rq但是一旦我启动app.pyredis worker 就会失败:

这里tasks.py

这里app.py

这里我使用的命令:

我打开第二个窗口并运行rq worker,我在这篇文章的第一部分失败了。

我试图用谷歌搜索,但这篇文章只是说他更新了他的 Windows 操作系统,是一个已解决的错误……有人知道如何解决这个问题吗?

0 投票
1 回答
642 浏览

python - 将python烧瓶应用程序上下文传递给rq作业的正确方法

我创建了一个烧瓶应用程序,它实际上是一个新闻搜索应用程序。它目前提供许多路由,与 elasticsearch 集成以进行文档搜索和索引,并通过 Flask-SQLAlchemy 与 mySQL DB 集成。

该应用程序应允许登录用户搜索文档/文章,此时会触发弹性搜索并将结果返回给用户。这一切都有效。

我现在正在构建使用 RQ 和 Ajax 启动后台异步搜索的功能。现在我需要我的 RQ 来排队一个任务,该任务将搜索(调用一些 API)、更新我的数据库并更新我的 ES 索引。所有这些功能都已经在我的 Flask 应用程序中构建(搜索 API 调用、配置、DB ORM、ES 接口),因此我希望理想地重用所有这些功能。

我有一个 RQ 设置,它调用一个模块,然后尝试创建一个新的应用程序实例,以便我可以重用现有的 DB/ES 设置,但是当调用代码时我从 RQ 收到错误:

应用结构如下:

在我的 views.py 文件中,我尝试使用以下行将任务排队:

这会导致我在烧瓶方面没有问题,但会在 RQ 工作人员上引发上述错误

在 news_functions.py 文件中,我尝试创建应用程序的一个实例,以便我可以通过以下导入和设置重用我的模型等,这似乎引发了错误:

我认为问题在于我正在尝试从 app 文件夹本身导入 create_app,但我不知道我的其他选项是什么。如果我向上移动一个文件夹,则 RQ 作业无法将任务排队,因为它超出了应用程序的范围。

我不确定我是否以正确的方式处理这个问题,但我实际上希望能够重用应用程序配置、flask-sqlalchemy、es setup 在后台执行这个额外的任务。

希望有意义,有人可以提供帮助!

0 投票
1 回答
489 浏览

python - 来自 Flask 的 RQ 任务不断添加到队列中

我的设置是:

  • 在 docker 本地运行 Redis
  • 在 virtualenv(rq) 中运行 RQ
  • 在 virtualenv(rq) 中运行 Flask

目标是通过点击 Flask 应用程序来启动 RQ 任务。

Redis 似乎运行良好,rq worker 也是如此(由“rq worker”启动)

简单的任务会排队并完成。简单的子处理“ls”task2 运行良好。

但我的子处理 python没有

烧瓶python代码(ex1.py):

当我点击端点'/pyv'时,我的“rq worker”窗口的输出变得疯狂并且似乎正在添加项目(???)......这是一个示例......

...等等...它不会停止,直到我 Cntl+c 并重新启动 docker Redis。

有任何想法吗?我猜使用这个框架启动这样的命令行应用程序应该没问题?这是我第一次尝试 RQ+Flask。我的最终目标是包装一个使用 Tensorflow 的重型 python 命令行应用程序。我会将我的工作人员限制为 2 名,并且我已确保该应用程序仅使用我的 GPU 内存的一半……所有这些都可以正常工作。

但首先,我需要解决这个问题! - 谢谢。

0 投票
1 回答
25 浏览

python - RQ-作业无缘无故失败

这是简单打印功能的信息。具有任何功能的作业都会无缘无故地失败。

状态:失败

作业:<Job fdee8b46-3a9a-4014-b82f-370616bf3325: ams.ams(<Request 'http://172.17.0.2:5000/task/upload/4' [POST]>, '4')>

0 投票
1 回答
349 浏览

python - 使用 Redis Queue 设置环境变量

我是 RQ 的新手,我正在尝试在我的烧瓶应用程序中实现它。我的一条路线的主要目标是更新数据库中的值。要设置我的工人,我正在使用以下内容:

然后更新路由将更新作业排队

最后,worker 运行更新函数

我知道工作人员设置(几乎)有效,因为如果我将 update_task 功能切换为简单的东西,例如:

有用。但是,对于真正的函数,我一直遇到我的环境变量没有被定义的问题,因为当我运行实际更新时,我得到异常说我的变量是 None 或类似的东西。

有谁知道如何处理 RQ 中的环境变量?我应该在某个配置文件之类的地方再次声明它们吗?

0 投票
0 回答
1227 浏览

python - 尝试使用 Redis rq 时出现“ValueError:不支持的 pickle 协议:5”

我正在尝试让 Redis 和 rq 正常工作。

这是我的主要代码:

from rq import Queue from redis import Redis from util import count_words_at_url from rq.registry import FailedJobRegistry, Job 导入时间

如果名称== '主要':

我的后台任务是:

导入请求

def count_words_at_url(url): resp = requests.get(url) return len(resp.text.split())

我在控制台中得到这个输出:

0 投票
0 回答
353 浏览

python - 使用 python/flask/bootstrap/rq/redis 动画进度条的方法

我在执行一些长时间运行的计算的应用程序中使用烧瓶。我已使用此代码成功地将计算密集型代码卸载到 rq 工作人员

紧随其后的是以下代码:

run_simulation代码使用 job.meta 更新其进度,如下所示:

到目前为止所描述的一切都按预期工作。在控制台中,我每秒打印一次 percent_complete。

我想要的用户体验是,一旦计算密集型作业开始,我想弹出一个带有进度条(使用引导程序)和取消按钮的模式对话框。进度条应该每秒更新一次进度指示器。我想要一个解决这个问题的简单方法的建议。具体来说,我不明白执行模型应该是什么。

0 投票
0 回答
216 浏览

heroku - Redis 和 RQ 在本地工作,但无法在 Heroku 上连接

我有一个烧瓶应用程序,它使用 redis 和 rq 来运行后台任务。它在我的本地机器上运行良好,但在 Heroku 上失败并显示以下消息:

2021-03-07T15:27:00.442429+00:00 app[worker.1]:连接到 localhost:6379 时出现错误 111。拒绝连接。

看来我的代码没有获取 REDISTOGO_URL,但是当我打印出来时,它是正确的。

我在 Heroku 中使用 RedisToGo 插件。Heroku 环境变量:REDISTOGO_URL=redis://redistogo:a533a44d2a1560ccabc0259c9acc8cb7@scat.redistogo.com:11299/

我的相关代码:

初始化redis的代码:

我的档案

0 投票
0 回答
212 浏览

python - rq worker 给 SystemExit: 2

我正在使用 redis 队列在后台运行视频分析代码。这是用于存储输出的文件夹的代码片段 -

我收到此错误 -

我阅读了文档,但他们没有明确回答。谢谢你。