有几个类可以通过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的独立服务器。
更多 examples 可供选择:
echoserver.py示例 - demonstrates gevent.server.StreamServer
示例wsgiserver.py - demonstrates gevent.pywsgi.WSGIServer
示例wsgiserver_ssl.py - demonstrates WSGIServer with ssl
Next page: 名称解析(DNS)