实现服务器#

有几个类可以通过GEvent简化服务器实现。它们都共享一个类似的接口,继承自 BaseServer ::

def handle(socket, address):
     print('new connection!')

server = StreamServer(('127.0.0.1', 1234), handle) # creates a new server
server.start() # start accepting new connections

此时,接受的任何新连接 127.0.0.1:1234 会产生新的 gevent.Greenlet 产卵运行 手柄 功能。停止服务器使用 BaseServer.stop() 方法。

如果发生 gevent.pywsgi.WSGIServer手柄 必须是可调用的wsgi应用程序。

通过传递 gevent.pool.Pool 实例。此外,通过游泳池 BaseServer.stop() 终止正在进行的请求的方法::

pool = Pool(10000) # do not accept more than 10000 connections
server = StreamServer(('127.0.0.1', 1234), handle, spawn=pool)
server.serve_forever()

小技巧

如果不想限制并发性,但是 do 要能够终止未处理的请求,请使用大小为的池 None .

这个 BaseServer.serve_forever() 方法调用 BaseServer.start() 然后等待直到中断或服务器停止。

这个 gevent.pywsgi 模块包含 PEP 3333 WSGI server . 此外, gunicorn 是支持GEvent的独立服务器。

重要

所提供的服务器实现主要用于开发和测试,或内部使用,否则仅用于一般的“安全”场景。他们还没有经过安全审计。将他们暴露在公共互联网上,风险自负。

API引用#

实例#

更多 examples 可供选择: