Python socket限制(1024)错误

1 投票
2 回答
1953 浏览
提问于 2025-04-18 18:33

有没有人知道怎么用 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。

撰写回答