我正在尝试使用gevent进行异步编程,而无法理解代码的工作方式。
我正在尝试使用已关闭端口(22)上的套接字ping google.com并期望item
函数同时发生但不会发生
我有一个python代码如下
ping
我期待看到:
class Ping(object):
def checkReachability(self,index):
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.settimeout(2)
print index
try:
sock.connect(('google.com',22))
gevent.sleep(0)
except socket.error as e:
print str(e)
sock.close()
def ping(self):
threads = [gevent.spawn(self.checkReachability, i) for i in range(3)]
gevent.joinall(threads)
if __name__ == 'main':
m = Ping()
m.ping()
这就是我得到的
0
1
2
timeout
timeout
timeout
任何帮助都会有所帮助。
由于
答案 0 :(得分:0)
想出解决方案。
在导入中添加猴子补丁解决了我的问题。
from gevent import monkey
monkey.patch_socket()