gevent.baseserver
--用于实现服务器的基类¶用于实现服务器的基类
基类:object
为GEvent中的服务器实现一些公共功能的抽象基类。
listener -- 要么是服务器应该绑定的地址,要么是 gevent.socket.socket
已绑定的实例(如果是TCP套接字,则将其置于侦听模式)。
handle -- 如果给定,则为请求处理程序。可以用几种方法定义请求处理程序。通常,子类将实现 handle
方法作为实例方法。或者,函数可以作为 handle
构造函数的参数。在这两种情况下,稍后可以通过调用 set_handle()
. 当请求处理程序返回时,用于请求的套接字将关闭。因此,如果套接字仍在使用中(例如,通过手动生成的greenlet),则处理程序不能返回。
spawn -- 如果提供,则调用以创建新的greenlet来运行处理程序。默认情况下, gevent.spawn()
使用(意味着对并发请求的数量没有人为限制)。可能的值 产卵 甲: gevent.pool.Pool
实例-- handle
将使用 gevent.pool.Pool.spawn()
只有在泳池没有满的时候。当连接已满时,不接受新连接;- gevent.spawn_raw()
—— handle
将在一个未加工的绿叶中执行,该绿叶中的开销将略低于 gevent.Greenlet
默认情况下生成的实例;- None
—— handle
将立即执行,在 Hub
格林莱特。 handle
不能使用任何阻塞函数,因为它将意味着切换到 Hub
. -整数--的快捷方式 gevent.pool.Pool(integer)
在 1.1a1 版更改: 当 手柄 函数从处理连接返回,客户端套接字将关闭。这解决了套接字的非确定性关闭问题,修复了python 3和pypy下的resourcewarnings。
在 1.5 版更改: 现在是一个上下文管理器,它返回自身并调用 stop()
在出口处。
如果用户使用地址而不是套接字初始化服务器,则此函数必须创建一个套接字,绑定它,并将其置于侦听模式。
它不应该由用户调用,而是由 start()
在开始接受循环之前。
停止接受连接并关闭监听插座。
如果服务器使用池生成请求,则 stop()
同时等待所有处理程序退出。如果在之后仍有处理程序执行 超时 已过期(默认1秒, stop_timeout
,然后终止池中当前正在运行的处理程序。
如果服务器不使用池,那么这只会停止接受连接;任何生成的处理请求的greenlet都会继续运行,直到它们自然完成。
设置进程在单个唤醒时可以执行的最大连续接受数。高值为高连接速率提供了更高的优先级,而较低的值为已建立的连接提供了更高的优先级。默认值为100。
请注意,如果同一侦听套接字上有多个工作进程,则应将其设置为较低的值。(pywsgi.WSGIServer设置为1时 environ["wsgi.multiprocess"]
是真的)
这相当于libuv的 uv_tcp_simultaneous_accepts 价值观。将环境变量UV_TCP_SINGLE_ACCEPT设置为真值(通常为1),会将默认值更改为1(仅在libuv中;这不会影响gevent)。
如果连续错误的accept()调用中出现错误,则休眠的秒数将加倍,直到达到最大延迟。当accept()最终成功时,延迟将再次重置为最小延迟。
服务器绑定到的IP地址(字符串)。
服务器绑定到的端口(整数)。
在stop()中等待客户端连接关闭的默认超时。
Next page: gevent.builtins
--内置函数的gevent友好实现