Używam Celery w Django z RabbitMQ jako brokerem na Heroku. Moja usługa RabbitMQ to CloudAMQP Tough na Heroku. W razie potrzeby mamy do czynienia z częstymi wyciekami pamięci, które próbuję podłączyć, ale generalnie usługa nie ulega pogorszeniu, kiedy to się dzieje.Selery + RabbitMQ + "Wystąpił błąd gniazda"
Gdy strona jest dużym natężeniu ruchu (jak dzisiaj), zaczynam się błędy sporadyczne jak następuje:
Couldn't log in: a socket error occurred
Zadanie jest całkowicie wyrzucone i nie są zarejestrowane w dowolnym miejscu. Jest to oczywiście problem krytyczny dla biznesu. Moje ustawienia seler są poniżej:
BROKER_URL = os.getenv('CLOUDAMQP_URL', DEFAULT_AMQP)
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['pickle', 'json']
CELERY_ENABLE_UTC = True
# CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend']
CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True
CELERY_SEND_TASK_ERROR_EMAILS = True
CELERY_RESULT_BACKEND = False
CELERY_IMPORTS = ('business.admin', 'mainsite.views', 'utils.crons', 'mainsite.forms',)
BROKER_POOL_LIMIT = 5
# trying to clean up this memory leak
CELERYD_MAX_TASKS_PER_CHILD = 5
CELERYD_TASK_TIME_LIMIT = 60*60
Jestem trochę nowych do selera, więc jestem szczęśliwy, aby zapewnić jak podążać-up cokolwiek dzienniki/etc będą pomocne, ale nie jestem jeszcze pewien, co do zapewnienia w tym momencie. Czy jest coś oczywistego w moich ustawieniach lub środowisku, które wydaje się, że może powodować ten problem w czasie intensywnego traffickowania?
być może zabrakło deskryptorów? –