问题标签 [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 - 作业仅在 redis cli 中可见,但未显示在 rq 仪表板中且未执行
我想使用 Redis 和 RQ 构建管道。我创建了一个工作人员、服务器和一个作业,工作人员正在运行并监听队列,服务器正在向队列分派作业,作业被分派,我打印作业 ID,在控制台中,我可以看到工作人员日志……在队列中接收作业。该作业永远不会执行,也永远不会显示在 rq 仪表板中,但我可以在 Redis CLI 中看到它。
我正在使用的版本:
rq==1.7.0
redis==3.5.0
这是我的代码:
run.py 中的工人
我在这里派了一份工作
这是后台工作
这是工人的日志
这是来自 redis-cli 的日志
这是我的作文
我从来没有看到作业执行的日志,我尝试添加 TTL 和 TIMEOUT 但仍然面临同样的问题。
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 在后台执行这个额外的任务。
希望有意义,有人可以提供帮助!
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 内存的一半……所有这些都可以正常工作。
但首先,我需要解决这个问题! - 谢谢。
python - RQ-作业无缘无故失败
这是简单打印功能的信息。具有任何功能的作业都会无缘无故地失败。
状态:失败
作业:<Job fdee8b46-3a9a-4014-b82f-370616bf3325: ams.ams(<Request 'http://172.17.0.2:5000/task/upload/4' [POST]>, '4')>
python - 使用 Redis Queue 设置环境变量
我是 RQ 的新手,我正在尝试在我的烧瓶应用程序中实现它。我的一条路线的主要目标是更新数据库中的值。要设置我的工人,我正在使用以下内容:
然后更新路由将更新作业排队
最后,worker 运行更新函数
我知道工作人员设置(几乎)有效,因为如果我将 update_task 功能切换为简单的东西,例如:
有用。但是,对于真正的函数,我一直遇到我的环境变量没有被定义的问题,因为当我运行实际更新时,我得到异常说我的变量是 None 或类似的东西。
有谁知道如何处理 RQ 中的环境变量?我应该在某个配置文件之类的地方再次声明它们吗?
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())
我在控制台中得到这个输出:
python - 使用 python/flask/bootstrap/rq/redis 动画进度条的方法
我在执行一些长时间运行的计算的应用程序中使用烧瓶。我已使用此代码成功地将计算密集型代码卸载到 rq 工作人员
紧随其后的是以下代码:
该run_simulation
代码使用 job.meta 更新其进度,如下所示:
到目前为止所描述的一切都按预期工作。在控制台中,我每秒打印一次 percent_complete。
我想要的用户体验是,一旦计算密集型作业开始,我想弹出一个带有进度条(使用引导程序)和取消按钮的模式对话框。进度条应该每秒更新一次进度指示器。我想要一个解决这个问题的简单方法的建议。具体来说,我不明白执行模型应该是什么。
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的代码:
我的档案
python - rq worker 给 SystemExit: 2
我正在使用 redis 队列在后台运行视频分析代码。这是用于存储输出的文件夹的代码片段 -
我收到此错误 -
我阅读了文档,但他们没有明确回答。谢谢你。