【问题标题】:max number of clients reached celery最大客户数达到 celery
【发布时间】:2015-12-13 17:42:09
【问题描述】:

我将 django 与 celery 和 redis 一起使用。 我不断收到此错误 redis.exceptions:ResponseError max number of clients reached 我正在使用 heroku,我的 redis 后端的最大连接数为 400。我为主应用程序运行 20 个 dynos,而对于 celery,我正在运行 5 个 dynos。如何设置最大连接数?我试过把它放在我的 celery.py 中:

from __future__ import absolute_import

import os

from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'imdowntags.settings')

from django.conf import settings
app = Celery('imdowntags',
             broker=os.environ['REDIS_URL'],
             backend=os.environ['REDIS_URL'],
             include=['imdowntags.tasks'])

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
app.conf.update( CELERY_REDIS_MAX_CONNECTIONS = 20,)

也试过放

CELERY_REDIS_MAX_CONNECTIONS =20

在我的 settings.py 中

【问题讨论】:

    标签: python django heroku redis celery


    【解决方案1】:

    您可能正在达到 Redis 服务器本身的计划限制。如果您使用 Heroku Redis 插件,请参阅计划说明:https://elements.heroku.com/addons/heroku-redis

    您应该期望每个 dyno 至少有 1 个连接 - 网络 dyno 将东西排队,而 celery 工作人员将东西弹出。 20 个网络 + 5 个 celery 让您轻松超过免费套餐。

    【讨论】:

    • 嗯...完全错过了那个细节,对此感到抱歉。在任何情况下,关键是计算每个进程(以及扩展,每个测功机)的连接数。例如,如果您使用 gunicorn 或 uwsgi,每个 web dyno 将有多个进程(因此也有多个连接池),因此连接数可能会比预期的更快。
    • 是的,这是我设置该配置的连接池的问题,现在它可以工作了,感谢您的帮助!
    • @Tyler - 你还记得你在解决这个问题的配置中具体设置了什么吗?我面临着类似的问题。
    • @Tyler 我也面临着类似的问题 - 你能分享一下什么配置更改解决了这个问题吗?谢谢
    • 如果我没记错的话,这个答案是正确的。我没有更改任何配置,只需升级 heroku 中的 redis 实例。
    猜你喜欢
    • 2023-02-04
    • 2018-11-27
    • 2020-06-07
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多