Python socket限制(1024)错误
有没有人知道怎么用 Python 2.7.8
来解决这个问题?
从上面的描述来看,使用了一些库,比如 gevent
,但我知道的问题是限制:错误:IOError: 不能监视超过 1024 个套接字
File "C:\Python27\lib\httplib.py", line 806, in send
self.connect()
File "C:\Python27\lib\site-packages\requests-2.3.0-py2.7.egg\requests\packages\urllib3\connection.py", line 106, in connect
conn = self._new_conn()
File "C:\Python27\lib\site-packages\requests-2.3.0-py2.7.egg\requests\packages\urllib3\connection.py", line 90, in _new_conn
(self.host, self.port), self.timeout, *extra_args)
File "C:\Python27\lib\site-packages\gevent\socket.py", line 574, in create_connection
sock = socket(af, socktype, proto)
File "C:\Python27\lib\site-packages\gevent\socket.py", line 242, in __init__
self._read_event = io(fileno, 1)
File "core.pyx", line 466, in gevent.core.loop.io (gevent/gevent.core.c:8305)
File "core.pyx", line 804, in gevent.core.io.__init__ (gevent/gevent.core.c:14393)
IOError: cannot watch more than 1024 sockets
有谁知道该怎么做吗?
2 个回答
1
如果你在使用 grequests
来发送请求的话,你可以使用一个会话。
sess = requests.Session()
reqs = [grequests.get(u, /* params */, session=sess) for u in urls]
results = grequests.map(reqs)
1
你可能只需要提高你系统中打开文件的限制。想了解更多,可以看看这里:增加文件描述符的限制 - 在Linux系统中,默认的限制通常是1024。