Отправка HTTP-запроса внутри asynchttpconsumer django? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть класс asynchttpconsumer в моем django проекте, который получает веб-перехватчики с внешнего сервера. во время запроса веб-перехватчика я хотел бы отправить http-запрос на сервер авторизации, получить ответ и использовать его для завершения sh обработки запроса веб-перехватчика. Я последовал этому руководству, но расширил имеющийся у меня код. https://channels.readthedocs.io/en/latest/topics/consumers.html#asynchttpconsumer

class frontEndConsumer(AsyncHttpConsumer):
    async def http_request(self, request):
        header = self.scope
        print(header)
        # connect to auth server
        conn = http.client.HTTPConnection("https://******.auth0.com", 80)
        headers = { 'authorization': "Bearer *******************" }
        print("request get connection")
        conn.request("GET", "/userinfo", headers=headers)

        res = conn.getresponse()
        data = res.read()
        # do some processing
        print(data.decode("utf-8"))  
        # do other stuff

        await self.http_reply(data)
        return

Поскольку я использую службу аутентификации (auth0), я использовал их пример для получения информации отсюда: https://auth0.com/docs/quickstart/backend/python/02-using но Я продолжаю получать errno -2 в строке "conn.request":

Exception inside application: [Errno -2] Name or service not known
  File "/home/jeremy/.local/lib/python3.6/site-packages/channels/consumer.py", line 59, in __call__
    [receive, self.channel_receive], self.dispatch
  File "/home/jeremy/.local/lib/python3.6/site-packages/channels/utils.py", line 51, in await_many_dispatch
    await dispatch(result)
  File "/home/jeremy/.local/lib/python3.6/site-packages/channels/consumer.py", line 73, in dispatch
    await handler(message)
  File "/home/jeremy/Documents/APbackend/myapp/webhook.py", line 59, in http_request
    conn.request("GET", "/userinfo", headers=headers)
  File "/usr/lib/python3.6/http/client.py", line 1264, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1310, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1259, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1038, in _send_output
    self.send(msg)
  File "/usr/lib/python3.6/http/client.py", line 976, in send
    self.connect()
  File "/usr/lib/python3.6/http/client.py", line 948, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "/usr/lib/python3.6/socket.py", line 704, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/usr/lib/python3.6/socket.py", line 745, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
  [Errno -2] Name or service not known

Я не могу найти никаких ссылок на эту ошибку, или, если это даже правильный подход к тому, что я пытаюсь сделать!

1 Ответ

0 голосов
/ 06 августа 2020

Выяснил, что произошло:

мой URL должен быть без https: //

После этого я получаю ошибку 301

это было вызвано HTTPConnection, auth0 не не поддерживает http, только https. поэтому ему необходимо перейти на HTTPSConnection и порт на 443.

смог заставить его работать после этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...