Ошибка «Сервер отключен» при использовании прокси-туннеля SSH с aiohttp в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка «Сервер отключен» при использовании прокси-туннеля SSH с aiohttp в Python

Сообщение Anonymous »

Я пытаюсь отправить запросы к конечной точке с помощью сценария Python, который подключается к прокси-туннелю SSH. Я настроил SSH-туннель с помощью следующей команды:

Код: Выделить всё

sshpass -p "" ssh -D 8090 my_user@my_server.com
Как только туннель установлен, я могу выполнять команды внутри сервера. Я использую этот прокси для выполнения HTTP-запросов через скрипт Python. Однако при использовании асинхронных функций в сочетании с aiohttp я получаю сообщение об ошибке: Сервер отключен
Это происходит только тогда, когда я делаю запросы асинхронно. Проблема не возникает, когда я пытаюсь отправлять запросы без прокси-сервера или с синхронными запросами.
Вот соответствующая часть моего кода, использующая 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»