我正在尝试将WSGIServer绑定到IPv6环回地址:
import socket
import gevent
from gevent.pywsgi import WSGIServer
addrs = socket.getaddrinfo('::1', 8000, socket.AF_INET6, 0, socket.SOL_TCP)
bind_spec = addrs[0][-1]
listener = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
listener.bind(bind_spec)
server = WSGIServer(
listener,
lambda a,b:'asd'
)
server.serve_forever()但这只会让你
error: [Errno 22] Invalid argument在……里面
File "/usr/local/lib/python2.7/dist-packages/gevent/server.py", line 122, in _do_accept
client_socket, address = self.socket.accept()我试过使用gevent monkeypatcher,但没有用。在创建套接字之后导入gevent也没有帮助。
我的系统上已启用IPv6。如果我将服务器结构替换为普通的accept(),套接字将成功绑定并接受连接。
listener.listen(5)
listener.accept()发布于 2013-02-12 18:19:18
我太傻了..。GEvent不会在提供的套接字上调用listen(),因此我必须在创建服务器之前自己调用它。
https://stackoverflow.com/questions/14801114
复制相似问题