【问题标题】:Python celery creates a lot of connections on redisPython celery 在 redis 上创建了很多连接
【发布时间】:2020-12-23 04:00:22
【问题描述】:

我正在尝试使用 redis 和 celery 提供互联网服务。 我的 redis 实例绑定到 10 个并发客户端。当我试图只运行一个工作人员时,它会出于某种原因启动 6-9 个连接(我在我的 redis 管理面板上看到了这个)。一段时间后,它开始抛出“达到最大客户”错误。 这是工人使用这么多连接的预期行为吗?我应该切换到rabbitmq吗?

config = Configuration(None, EnvironmentType.beta, '../configuration.json')
 
beta_broker = Celery('src.beta_module', broker=config.celery_redis_url, include=['src.beta_module.notifications'])



 
 
def main():
    beta_broker.start(argv=['celery', 'worker', '-E', '--concurrency=1', '--loglevel=DEBUG'])
 
 
if __name__ == '__main__':
    main()

更新

我尝试设置redis_max_connections,但没有帮助

    beta_broker = Celery('src.beta_module', broker=config.celery_redis_url, include=['src.beta_module.notifications'])
    beta_broker.conf.redis_max_connections = 2

broker_pool_limit = 0 BROKER_TRANSPORT_OPTIONS = { “最大连接数”:20, }

仍然创建 8 个到 redis 的连接

有什么方法可以禁止接收任务结果?反正我不需要这个功能。也许这有助于减少连接数?

更新

经过大约 3 天的研究和阅读大量博客和文档后,我决定切换到 rq

【问题讨论】:

    标签: python redis celery


    【解决方案1】:

    您是否尝试过使用 celery 为 redis 连接池设置最大连接数? https://docs.celeryproject.org/en/stable/userguide/configuration.html#redis-max-connections

    redis_max_connections - 默认:无限制。

    【讨论】:

    • 没有帮助。我仍然看到大量的客户。在帖子中查看我的更新
    【解决方案2】:

    尝试以下方法:

    beta_broker.conf["broker_transport_options"] = {'fanout_prefix': True,
                                                    'fanout_patterns': True,
                                                    'max_connections': 2,
                                                    'socket_keepalive': True},
    beta_broker.conf["broker_pool_limit"] = 2
    

    【讨论】:

    • 感谢您的解决方案,我一定会尝试这个,但我决定切换到 RQ。发现它对我来说更简单方便。
    • 是的,如果你想要简单,那么 Huey (huey.readthedocs.io/en/latest) 或 RQ 值得一试... Celery 恕我直言更强大和灵活(用户可以编写任何主要 Celery 功能的实现 - 我们已经拥有我们自己的自动缩放器、调度器、监控等)。
    猜你喜欢
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2018-04-02
    • 2022-01-11
    • 2020-04-15
    • 2020-05-29
    • 2021-12-13
    • 2017-07-18
    相关资源
    最近更新 更多