使用 python-rq (redis) 的多台服务器上的远程工作者
Remote workers on multiple servers with python-rq (redis)
我正在使用 redis
和 python-rq
来管理数据处理任务。我希望在多个服务器之间分配数据处理(每个服务器将管理多个 rq worker)但我想在主服务器上保留一个唯一的队列。
有没有办法使用 python-rq
实现此目的?
谢谢。
事实证明这很容易。有两个步骤:
1) 在 master 机器上配置 Redis
以便远程 "agent" 服务器对外部通信开放。这是通过编辑 bind
信息来完成的,如 in this post 所述。如果将绑定值设置为 0.0.0.0
,请确保设置密码,因为这将向任何人打开 Redis 连接。
2) 使用 url
参数在远程 "agent" 服务器上启动 worker:
rq worker --url redis://:[your_master_redis_password]@[your_master_server_IP_address]
在主服务器上,您可以通过键入以下内容来检查连接是否正确建立:
rq info --url redis://:[your_master_redis_password]@localhost
如果您启用了本地主机绑定,这应该会显示您的 "master" Redis
可用的所有工作人员,包括您在远程服务器上创建的新工作人员。
我正在使用 redis
和 python-rq
来管理数据处理任务。我希望在多个服务器之间分配数据处理(每个服务器将管理多个 rq worker)但我想在主服务器上保留一个唯一的队列。
有没有办法使用 python-rq
实现此目的?
谢谢。
事实证明这很容易。有两个步骤:
1) 在 master 机器上配置 Redis
以便远程 "agent" 服务器对外部通信开放。这是通过编辑 bind
信息来完成的,如 in this post 所述。如果将绑定值设置为 0.0.0.0
,请确保设置密码,因为这将向任何人打开 Redis 连接。
2) 使用 url
参数在远程 "agent" 服务器上启动 worker:
rq worker --url redis://:[your_master_redis_password]@[your_master_server_IP_address]
在主服务器上,您可以通过键入以下内容来检查连接是否正确建立:
rq info --url redis://:[your_master_redis_password]@localhost
如果您启用了本地主机绑定,这应该会显示您的 "master" Redis
可用的所有工作人员,包括您在远程服务器上创建的新工作人员。