Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中设置getaddrinfo()的超时_Python_Sockets_Timeout - Fatal编程技术网

在Python中设置getaddrinfo()的超时

在Python中设置getaddrinfo()的超时,python,sockets,timeout,Python,Sockets,Timeout,是否可以在CPython 2.7中设置getaddrinfo()调用的超时 socket.setdefaulttimeout()不起作用。我并不真正想要一个使用线程或信号包装函数的解决方案。只使用标准库的解决方案是最好的,但使用第三方软件包是可以接受的 例如,我想这样做: socket.getaddrinfo("""!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_""", None) socket.getaddrinfo(“!@$%^&*()+=-[]\

是否可以在CPython 2.7中设置getaddrinfo()调用的超时

socket.setdefaulttimeout()不起作用。我并不真正想要一个使用线程或信号包装函数的解决方案。只使用标准库的解决方案是最好的,但使用第三方软件包是可以接受的

例如,我想这样做:

socket.getaddrinfo("""!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_""", None)
socket.getaddrinfo(“!@$%^&*()+=-[]\\\”,./{}\\\:?~\\”,无)

并让它在1秒内引发一个socket.error。(请注意,当我在OS X上运行此程序时,它无论如何都会很快超时,但在Debian上运行大约需要60秒才能失败)。

我的理解是getaddrinfo是OS提供的库的包装器:

在unix上:

int getaddrinfo(const char *nodename, const char *servname,
                const struct addrinfo *hints, struct addrinfo **res);
在Windows上:

int WSAAPI getaddrinfo(
  __in_opt  PCSTR pNodeName,
  __in_opt  PCSTR pServiceName,
  __in_opt  const ADDRINFOA *pHints,
  __out     PADDRINFOA *ppResult
);
它们都没有超时值,因此Python不能直接提供给您。
您必须使用线程编写代码或使用第三方库。

我的理解是getaddrinfo是OS提供的库的包装器:

在unix上:

int getaddrinfo(const char *nodename, const char *servname,
                const struct addrinfo *hints, struct addrinfo **res);
在Windows上:

int WSAAPI getaddrinfo(
  __in_opt  PCSTR pNodeName,
  __in_opt  PCSTR pServiceName,
  __in_opt  const ADDRINFOA *pHints,
  __out     PADDRINFOA *ppResult
);
它们都没有超时值,因此Python不能直接提供给您。 您必须使用线程编写代码,或者使用第三方库