实现服务器#
有几个类可以通过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 可供选择:
echoserver.py示例 - demonstrates
gevent.server.StreamServer
示例wsgiserver.py - demonstrates
gevent.pywsgi.WSGIServer
示例wsgiserver_ssl.py - demonstrates
WSGIServer with ssl