我正在用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)