TimeoutError: [Errno 60] Не удалось установить соединение («8.8.8.8», 53) - PullRequest
0 голосов
/ 17 ноября 2018

Я изучаю пакет asyncio в Python 3.7.Однако, когда я попытался запустить следующий код (из http://markuseliasson.se/article/introduction-to-asyncio/),, я мог подключиться только к 8.8.4.4, но не к 8.8.8.8.

Могу я спросить причину? Спасибо!

Код выглядит следующим образом:

import asyncio
from random import randint

index = 0

async def do_stuff(ip, port):

    global index
    index = index +1

    reader, writer = await asyncio.open_connection(ip,port)
    print('About to open a connection to {ip}'.format(ip=ip))

    num = randint(0,5)
    print(index,num)
    await asyncio.sleep(num)
    print('Connection open to {ip}'.format(ip=ip))

    writer.close()
    print('Closed connection to {ip}'.format(ip=ip))

if __name__ == '__main__':
    loop = asyncio.get_event_loop()

    work = [
        asyncio.ensure_future(do_stuff('8.8.8.8','53')),
        asyncio.ensure_future(do_stuff('8.8.8.8','53'))
    ]

    loop.run_until_complete(asyncio.gather(*work))

Сообщение об ошибке выглядит следующим образом:

About to open a connection to 8.8.4.4
4
Connection open to 8.8.4.4
Closed connection to 8.8.4.4
Traceback (most recent call last):
  File "asyn.py", line 23, in <module>
    loop.run_until_complete(asyncio.gather(*work))
  File "/Users/Ten/anaconda3/envs/py37/lib/python3.7/asyncio/base_events.py", line 573, in run_until_complete
    return future.result()
  File "asyn.py", line 5, in do_stuff
    reader, writer = await asyncio.open_connection(ip,port)
  File "/Users/Ten/anaconda3/envs/py37/lib/python3.7/asyncio/streams.py", line 77, in open_connection
    lambda: protocol, host, port, **kwds)
  File "/Users/Ten/anaconda3/envs/py37/lib/python3.7/asyncio/base_events.py", line 948, in create_connection
    raise exceptions[0]
  File "/Users/Ten/anaconda3/envs/py37/lib/python3.7/asyncio/base_events.py", line 935, in create_connection
    await self.sock_connect(sock, address)
  File "/Users/Ten/anaconda3/envs/py37/lib/python3.7/asyncio/selector_events.py", line 475, in sock_connect
    return await fut
  File "/Users/Ten/anaconda3/envs/py37/lib/python3.7/asyncio/selector_events.py", line 505, in _sock_connect_cb
    raise OSError(err, f'Connect call failed {address}')
TimeoutError: [Errno 60] Connect call failed ('8.8.8.8', 53)
...