gpt4 book ai didi

Python Redis 队列

转载 作者:行者123 更新时间:2023-12-05 03:56:41 31 4
gpt4 key购买 nike

我想在 redis + Flask 和 Python 中实现一个队列。我已经用 RQ 实现了这样的查询,如果你有 Flask 应用程序和任务在同一台服务器上工作,它就可以正常工作。我想知道是否有可能创建一个队列(多消费者),其中工作人员实际上在另一台服务器上。例如:

客户端将数据发布到 Flask -> Flask 在 Redis 队列中创建一个项目 -> Redis 队列被其他服务器(后端)上的一些工作人员拾取。

因为 Flask 中的代码是这样的:

redis_conn = Redis()
q = Queue('my_queue', connection=redis_conn)
job = q.enqueue_call(func='myqueue.myfunc', args=(json,), result_ttl=5000)

显然“myqueue.myfunc”需要留在 Flask 服务器上,但我希望能够推送数据并在另一台服务器上有一个工作人员。你知道这是否可行,或者还有什么其他的东西可以用来解决这个问题?

谢谢。

最佳答案

在其他节点上拥有队列 worker 的模式很常见。

所以在你的flask app节点配置一个远程redis服务器

r = redis.Redis(host='myredis.example.com', port=6379)

然后在一个或多个工作节点上

from redis import Redis
from rq import Queue, Worker

# Returns all workers registered in this connection
redis = Redis(host='myredis.example.com', port=6379)
workers = Worker.all(connection=redis)

# Returns all workers in this queue (new in version 0.10.0)
queue = Queue('queue_name')
workers = Worker.all(queue=queue)
worker = workers[0]
print(worker.name)

关于Python Redis 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119084/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com