Использование сельдерея в Heroku вызывает тайм-аут - PullRequest
0 голосов
/ 08 октября 2019

Я использую Heroku для своего проекта Django, который работает на сервере daphne. А также у меня есть работник из сельдерея, который выполняет задачи параллельно, чтобы уменьшить время отклика.

Ниже мой Procfile

web: daphne myproject.asgi:application --port $PORT --bind 0.0.0.0 -v 0
worker: celery worker -A myproject --loglevel=debug --concurrency=8

Сценарий: Мне нужно сгенерировать оператор, используяданные баланса за последние 24 месяца.

Для этого у меня есть две конечные точки

  • GET BALANCE - выбор баланса за 24 месяца ( считается каждый месяц)в качестве задачи и 24 задачи выполняются с использованием Celery Worker *
  • GENERATE STATEMENT - Генерировать оператор для данных за 24 месяца (этот API вызывается сразу после GET BALANCE API)

Если я тестирую одну компанию, то для первого API уходит 15-20 секунд. Но если я тестирую для двух или более компаний (используя нагрузочное тестирование), сначала проходит только одна компания, а другие терпят неудачу из-за проблемы HEROKU 30 Seconds Timeout

Например, для 5 компаний:

  • C1 - для завершения 15 секунд - Pass
  • C2 - для завершения 27 секунд - Pass
  • C3- для завершения требуется 43 секунды - Время ожидания
  • C4 - для завершения 48 секунд - Время ожидания
  • C5 - для завершения 55 секунд - Тайм-аут

Я думаю, что проблема связана с очередью заданий и HEROKU Timeout. Но я не могу отправить ответ клиенту в GET BALANCE вызове до завершения задания, потому что в следующую секунду мне нужно сгенерировать оператор.

Также я попыталсяувеличение рабочего лимита, но это работает не более чем для 2 или 3 компаний.

Пожалуйста, предложите мне какой-нибудь способ, чтобы я мог избавиться от проблемы тайм-аута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...