Код: Выделить всё
sshpass -p "" ssh -D 8090 my_user@my_server.com
Это происходит только тогда, когда я делаю запросы асинхронно. Проблема не возникает, когда я пытаюсь отправлять запросы без прокси-сервера или с синхронными запросами.
Вот соответствующая часть моего кода, использующая aiohttp:
Код: Выделить всё
async def _resilient_request(
self, url: str, headers: Dict[str, str]
) -> Dict[str, Any]:
proxy = "socks5h://localhost:8090"
for attempt in range(8):
try:
timeout = aiohttp.ClientTimeout(total=30)
async with aiohttp.ClientSession(
timeout=timeout, json_serialize=ujson.dumps,
) as session:
async with session.get(url, headers=headers, ssl=False, proxy=proxy) as resp:
resp.raise_for_status()
data = await resp.json()
return data
except (
aiohttp.ClientError,
aiohttp.ClientResponseError,
asyncio.TimeoutError,
aiohttp.ServerDisconnectedError,
aiohttp.ClientConnectorError,
RuntimeError,
) as err:
if attempt < 3:
await asyncio.sleep(attempt + 1)
print(
f"Resilient request failed. Retrying attempt {attempt + 1}"
)
print(f"Error: {err}")
continue
else:
raise err
Я настроил прокси-туннель SSH с помощью команды sshpass -p "" ssh -D 8090 my_user@my_server.com и использовал aiohttp для отправлять асинхронные запросы через этот туннель к конечной точке, которой требуется прокси-сервер.
Что я ожидал:
Я ожидал, что асинхронные запросы будут успешными и вернут ответ от конечную точку, так как прокси-туннель был настроен правильно.
Что произошло на самом деле:
Вместо того, чтобы получить действительный ответ, я столкнулся с ошибкой «Сервер отключен при отправке запросов с использованием aiohttp в асинхронный контекст. Туннель отлично работает для обычных синхронных запросов, но не работает при использовании асинхронного режима.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-python