私はセロリとredisでdjangoを使用しています。
このエラーが発生し続けますredis.exceptions:ResponseErrorクライアントの最大数に達しました
私はherokuを使用しており、redisバックエンドの最大接続数は400です。メインアプリでは20 dynoを実行し、セロリでは5dynoを実行しています。 接続の最大数を設定するにはどうすればよいですか? 私はそれを私の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,)
また、settings.py内にCELERY_REDIS_MAX_CONNECTIONS = 20
を入れてみました
このタスクを完了するためのリソースがないため、これを閉じます。
マスターで修正される可能性があります。4.0リリース後に戻ってくるかどうか見てみましょう。
BROKER_POOL_LIMIT=0
が同様の問題を解決すると言う人もいます: http ://stackoverflow.com/questions/12013220/celery-creating-a-new-connection-for-each-task
これは@askに関連付けることができますか?
こんにちは@ask
celery 4.0のリリース後に問題は解決しましたか?
celery-3.1.23とredis-2.6でも同じ問題が発生します。
redisのデフォルトのmaxclientsは10000で、celeryを3か月実行した後、redisクライアントは10000に増加します。
redisサーバーの接続がいっぱいであることがわかりましたが、セロリには(netstatによる)接続がほとんどないため、redisサーバーを再起動すると機能します。
しかし、設定やその他の方法で問題を解決するにはどうすればよいですか?
最も参考になるコメント
こんにちは@ask
celery 4.0のリリース後に問題は解決しましたか?
celery-3.1.23とredis-2.6でも同じ問題が発生します。
redisのデフォルトのmaxclientsは10000で、celeryを3か月実行した後、redisクライアントは10000に増加します。
redisサーバーの接続がいっぱいであることがわかりましたが、セロリには(netstatによる)接続がほとんどないため、redisサーバーを再起動すると機能します。
しかし、設定やその他の方法で問題を解決するにはどうすればよいですか?