Как использовать прокси в python, если звонок не сделан напрямую - PullRequest
0 голосов
/ 14 января 2020

Я видел несколько решений при использовании библиотеки запросов или urllib et c. но как насчет применения настройки прокси, когда вы делаете вызов через библиотеку? В моем примере я хочу отправить простой запрос POST в Slack из сети, используя python протоколирование. Команда curl работает нормально, так как использует прокси, определенный в env vars, но когда я использую python через slack-logger (https://pypi.org/project/slack-logger/), я получаю ошибку тайм-аута. Я пытался найти способ где-то разобрать мой прокси-адрес, но пока не смог найти решение.

import logging
from slack_logger import SlackHandler, SlackFormatter
import os

proxy = 'myproxy:myport' # used my proxy
os.environ['http_proxy'] = proxy
os.environ['HTTP_PROXY'] = proxy
os.environ['https_proxy'] = proxy
os.environ['HTTPS_PROXY'] = proxy

sh = SlackHandler('https://hooks.slack.com/...') # used my slack webhook
sh.setFormatter(SlackFormatter())
logging.basicConfig(handlers=[sh])
logging.warning('warn message')

Это ошибка:

--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.5/logging/handlers.py", line 1162, in emit
    h.endheaders()
  File "/usr/lib/python3.5/http/client.py", line 1118, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python3.5/http/client.py", line 944, in _send_output
    self.send(msg)
  File "/usr/lib/python3.5/http/client.py", line 887, in send
    self.connect()
  File "/usr/lib/python3.5/http/client.py", line 1268, in connect
    super().connect()
  File "/usr/lib/python3.5/http/client.py", line 859, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "/usr/lib/python3.5/socket.py", line 711, in create_connection
    raise err
  File "/usr/lib/python3.5/socket.py", line 702, in create_connection
    sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out
Call stack:
  File "test_slack.py", line 15, in <module>
    logging.warning('warn message')
Message: 'warn message'
Arguments: ()
...