Как исправить исключения ConnectTimeout из FastAPI

Я хочу создать сервер, который принимает запрос, выполняет некоторую обработку и перенаправляет запрос на другую конечную точку. Кажется, у меня проблема с более высоким параллелизмом, когда мой client.post вызывает httpx.ConnectTimeout исключение.

Я не полностью исключил возможность проблемы с конечной точкой (в настоящее время я работаю с ними, чтобы отладить все, что может быть на их стороне), но я пытаюсь выяснить, есть ли что-то не так с моей стороны или если есть какие-то явные недостатки, я могу их исправить.

Я запускаю это в ECS, в настоящее время в кластере, где задачи имеют 4 виртуальных процессора. Я использую образ докера uvicorn-gunicorn-fastapi(https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker). В настоящее время все настройки по умолчанию за вычетом привязки / порта / ведения журнала. Вот минимальный пример кода:

import httpx
from fastapi import FastAPI, Request, Response

app = FastAPI()

def process_request(path, request):
    #Process Request Here

def create_headers(path):
    #Create headers here

@app.get('/')
async def root(path: str, request: Request):
    endpoint = 'https://endpoint.com/'
    querystring = 'path=' + path
    data = process_request(request, path, request)
    headers = create_headers(request)
    async with httpx.AsyncClient() as client:
        await client.post(endpoint + "?" + querystring, data=data, headers=headers)
    return Response(status_code=200)

1 ответ

Может случиться так, что сервер на другой стороне принимает слишком много, и соединение просто истекает, потому что httpx не дает другой конечной точке достаточно времени для выполнения запроса?

Если да, вы можете попробовать отключить тайм-аут или увеличить лимит (который я предлагаю отключить).

См. https://www.python-httpx.org/quickstart/#timeouts.

Другие вопросы по тегам