gpt4 book ai didi

celery - 我可以将 Celery worker 绑定(bind)到给定共享数据库的特定实例吗?

转载 作者:行者123 更新时间:2023-12-01 12:40:37 24 4
gpt4 key购买 nike

我有许多机器,每台机器都有一个 Django 实例,共享一个 Postgres 数据库。

我想运行 Celery,为简单起见,最好使用 Django 代理和 Postgres 数据库。我没有大量的任务要运行,因此没有必要为此使用其他代理。

我想运行在本地文件存储上运行的 celery 任务。这意味着我希望 celery worker 只运行触发事件的同一台机器上的任务。

在当前设置下这可能吗?如果没有,怎么办呢?每台机器一个本地 Redis 实例?

最佳答案

我想出了如何使这项工作成功。不需要花哨的路由或代理。

我使用以主机命名的特殊队列运行每个 celeryd 实例。这可以自动完成,例如:

./manage.py celeryd -Q celery,`hostname`

然后我在存储主机名的 settings.py 中设置了一个主机名:

import socket
CELERY_HOSTNAME = socket.gethostname()

在每个 Django 实例中,这将具有不同的值。

然后我可以在异步调用我的任务时指定这个队列:

my_task.apply_async(args=[one, two], queue=settings.CELERY_HOSTNAME)

关于celery - 我可以将 Celery worker 绑定(bind)到给定共享数据库的特定实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14624906/

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