Как исправить исключения 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
не дает другой конечной точке достаточно времени для выполнения запроса?
Если да, вы можете попробовать отключить тайм-аут или увеличить лимит (который я предлагаю отключить).