- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遵循了 Miguel Grinberg 出色的 Flask Mega 教程,并成功地设置了一个 Flask Web 应用程序,其中包含一个 Redis 任务队列和 RQ 工作线程,所有这些都在 Docker 容器中。
为了提高任务队列性能,我现在需要使用我自己的自定义工作器,而不是默认的 RQ 工作器。
不幸的是,我很难理解我是如何在 docker 中启动自定义 worker 的。
Flask Mega Tutorial 使用“venv/bin/rq”覆盖Docker入口点,然后提供参数“worker -u redis://redis-server:6379/0 microblog-tasks”来启动默认的RQ worker ”。
可执行文件名称与 --entrypoint 标志一起提供,而命令参数在容器镜像名称之后的最后传递。
这是完整的命令 - 只有最后两行与此问题相关。
$ docker run --name rq-worker -d --rm -e SECRET_KEY=my-secret-key \
-e MAIL_SERVER=smtp.googlemail.com -e MAIL_PORT=587 -e MAIL_USE_TLS=true \
-e MAIL_USERNAME=<your-gmail-username> -e MAIL_PASSWORD=<your-gmail-password> \
--link mysql:dbserver --link redis:redis-server \
-e DATABASE_URL=mysql+pymysql://microblog:<database-password>@dbserver/microblog \
-e REDIS_URL=redis://redis-server:6379/0 \
--entrypoint venv/bin/rq \
microblog:latest worker -u redis://redis-server:6379/0 microblog-tasks
#!/usr/bin/env python
import sys
from rq import Connection, Worker
# Preload libraries
import library_that_you_want_preloaded
# Provide queue names to listen to as arguments to this script,
# similar to rq worker
with Connection():
qs = sys.argv[1:] or ['default']
w = Worker(qs)
w.work()
$ docker run --name rq-worker -d --rm -e SECRET_KEY=my-secret-key \
-e MAIL_SERVER=smtp.googlemail.com -e MAIL_PORT=587 -e MAIL_USE_TLS=true \
-e MAIL_USERNAME=<your-gmail-username> -e MAIL_PASSWORD=<your-gmail-password> \
--link mysql:dbserver --link redis:redis-server \
-e DATABASE_URL=mysql+pymysql://microblog:<database-password>@dbserver/microblog \
-e REDIS_URL=redis://redis-server:6379/0 \
--entrypoint venv/bin/rq \
microblog:latest /home/dashboard/app/custom_worker.py -u redis://redis-server:6379/0 microblog-tasks
$ docker run --name rq-worker -d --rm -e SECRET_KEY=my-secret-key \
-e MAIL_SERVER=smtp.googlemail.com -e MAIL_PORT=587 -e MAIL_USE_TLS=true \
-e MAIL_USERNAME=<your-gmail-username> -e MAIL_PASSWORD=<your-gmail-password> \
--link mysql:dbserver --link redis:redis-server \
-e DATABASE_URL=mysql+pymysql://microblog:<database-password>@dbserver/microblog \
-e REDIS_URL=redis://redis-server:6379/0 \
--entrypoint /home/dashboard/app \
microblog:latest custom_worker -u redis://redis-server:6379/0 microblog-tasks
最佳答案
在文档中可以使用以下命令:
/usr/local/bin/rq worker -w custom_worker.py --path path/to/sourcecode
使用/usr/local/bin/rq worker --help 查看更多选项
文档:
https://python-rq.org/docs/workers/#custom-worker-classes
关于docker - 如何在 Docker 容器(Python、Flask 和 Redis)中启动自定义 RQ 工作线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55001202/
我正在尝试 python-rq,但我没有看到如何明确地为队列赋予优先级? 优先级是否来自工作人员启动时定义的顺序? rqworker queueA queueB queueC 与 queueB 和 q
我正在尝试运行rq info命令,但我想获取远程redis机器上的信息。如何指定redis机器的url? 最佳答案 事实证明这很简单但没有记录: rq info --url redis://my-se
我将开始在我的项目中使用 django-rq。 Django integration with RQ, a Redis based Python queuing library. 测试使用 RQ 的
我们正在使用 NGINX + Gunicorn + Django + RQ 的架构,有几个 rq-worker。我们使用基本的 Django 日志记录设置(如下),具有翻转和最大文件大小,但是: 创建
我在使用 python RQ 运行多线程任务时遇到问题(在 v0.5.6 和 v0.6.0 上测试)。 考虑以下代码,作为我想要实现的目标的简化版本: 事物.py from threading imp
如何入队一个会运行很长时间的函数? 我想做以下事情: def batch_insert(数据): rows.append(MyModel(*data)) 如果 len(行) > 1000: MyMod
如果这是一个愚蠢的问题,我道歉并会羞愧地把头藏起来,但是: 我正在使用 rq 在 Python 中对作业进行排队。我希望它像这样工作: 工作 A 开始。作业 A 通过 Web API 抓取数据并存储。
我想使用 rq 在单独的 worker 上运行任务以从测量仪器收集数据。用户按下 dash 应用程序上的按钮将发出任务结束信号。问题在于任务本身不知道何时终止,因为它无权访问 dash 应用程序的上下
我正在使用 RQ ,并且我有一个包含数千个项目的 failed 队列,以及我不久前创建的另一个 test 队列用于测试,现在是空的且未使用。我想知道如何从 failed 队列中删除所有作业,并完全删除
我发现(见下文)函数 summary.rq (第 88 页)来自 quantreg 包打印不同的输出,这取决于样本量是大于等于还是小于 1001。 我知道,rq() 使用不同的方法,具体取决于样本大小
我对python rq不是很了解,我刚开始学习它。 有一个 task_a 需要 3 分钟才能完成处理。 @job def task_a(): time.sleep(180) print
我正在尝试使用 Redis 队列和 RQ 调度程序构建作业队列。但是当我尝试加载作业选项卡时,我从 RQ-dashboard 收到以下错误。我看到工作已添加,因为工作数量在增加。 During han
我的 python redis 队列中有一个嵌套的作业结构。首先执行 rncopy 作业。完成后,接下来是 3 个相关的注册作业。当所有这 3 个作业的计算完成后,我想触发一个作业向我的前端发送 we
我在设置 python-rq 时遇到了一个基本问题 - rqworker 似乎无法识别推送到它正在监听的队列的作业。 一切都在 virtualenv 中运行我有以下代码: from redis imp
我想知道将设置从 RQ worker 传递到任务函数的最佳方法是什么? 我想将我的所有设置保存在应用程序之外的文本文件中,然后在工作人员启动时读取它,然后使用这些值来执行实际任务。 现在我正在使用 o
我正在使用 rq和 RedisToGo。如何获取队列中的作业数?我在文档中找不到它? (在 Python 中) 当我尝试时: print "Before: ", len(q.jobs) result
如何将装饰器的函数传递给作业? 我有一个装饰器可以使用该函数运行作业。 @job def queueFunction(passedFunction, *args, **kwargs): # D
本周,我的集成测试停止工作。我发现这是一个无限期停滞的 django-rq 工作。我的输出: $: RQ worker 'rq:worker:47e0aaf280be.13' started, ver
我现在有大量文档要处理,我正在使用 Python RQ 来并行处理任务。 我希望在每个文档上执行不同的操作时完成一系列工作。例如:A -> B -> C 表示将文档传递给函数A,在之后A 已完成,继续
因此,RQ 明确声明我可以将对象的实例方法入队 here ,所以我一直在尝试这样做,但得到了一个 PicklingError: q.enqueue(some_obj.some_func, some_d
我是一名优秀的程序员,十分优秀!