Таймаут на чтение почтового запроса, содержащего тяжелый словарь

Я получаю POST-запрос, содержащий словарь Json объемом 3 мб. Когда я получаю de POST, мое представление пытается прочитать args в запросе, но это вызывает таймаут на сервере Heroku. Когда я пробую это локально, все работает нормально. Вот код:

def send_request():
    with open(file) as f:
        data = json.loads(f.read())
    data = json.dumps(data)
    response = requests.post(url=url_recette, data=data)
    return response
    
@csrf_exempt
def view(request):
    print('the server gets here')
    _args = json.loads(request.body.decode('utf-8'))
    print('the server never gets here so the timeout occurs when i load the args')

ошибка на Heroku =>

Jan 13 09:00:03 gestion-ugip-recette app[web] INFO [2023-01-13 09:00:03 +0100] [18] [INFO] Worker exiting (pid: 18)
Jan 13 09:00:03 gestion-ugip-recette heroku[router] error at=error code=H13 desc="Connection closed without response" method=POST path="/resiliation/api_get_requete_from_ak" host=gestion-ugip-recette.herokuapp.com request_id=ccd0a85b-8454-458d-90f8-ab9a59a203fb fwd="83.205.21.231" dyno=web.1 connect=0ms service=30826ms status=503 bytes=0 protocol=https
Jan 13 09:00:04 gestion-ugip-recette app[web] INFO [2023-01-13 09:00:04 +0100] [26] [INFO] Booting worker with pid: 26```

Has anyone an idea of what could be the problem? thx in advance.

Это может быть вызвано рядом причин, таких как ограниченные ресурсы на сервере Heroku или медленное соединение.

Одним из возможных решений является увеличение лимита таймаута на сервере Heroku. Это можно сделать, установив параметр timeout в команде gunicorn в Procfile.

Другим возможным решением является оптимизация кода для сокращения времени загрузки данных JSON. Это может включать использование другого метода для чтения данных JSON или уменьшение размера отправляемых данных

Это также может быть проблема с потреблением памяти, вы можете попробовать оптимизировать ваши данные, чтобы уменьшить размер словаря JSON, а также проверить, нет ли утечек памяти в вашем коде.

Возможно, также стоит проверить журналы ошибок приложения Heroku, чтобы узнать, есть ли дополнительная информация о причине тайм-аута.

Вернуться на верх