gevent.server
--TCP/SSL服务器#
TCP/SSL服务器
- class DatagramServer(*args, **kwargs)[源代码]#
基类:
BaseServer
UDP服务器
- class StreamServer(listener, handle=None, backlog=None, spawn='default', **ssl_args)[源代码]#
基类:
BaseServer
通用TCP服务器。
接受侦听套接字上的连接并生成用户提供的连接 手柄 每个连接的函数有两个参数:客户机套接字和客户机地址。
请注意,尽管成功生成的处理程序中的错误不会影响服务器或其他连接,但由
accept()
和 产卵 导致服务器在短时间内停止接受。确切的周期取决于min_delay
和max_delay
属性。延迟开始于
min_delay
每一个连续的错误都会加倍直到达到max_delay
. 一个成功的accept()
将延迟重置为min_delay
再一次。见
BaseServer
有关定义 手柄 功能及其重要限制。SSL支持
当给定正确的关键字参数时,服务器可以选择在SSL模式下工作。(也就是说,任何关键字参数的存在都将触发SSL模式。)在python 2.7.9和更高版本(支持
ssl.SSLContext
,这可以通过配置SSLContext
. 在任何Python版本上,都可以通过为ssl.wrap_socket()
.传入的套接字在传递到 手柄 功能。
如果 ssl_context 关键字参数存在,它应包含
ssl.SSLContext
. 其余的关键字参数将传递给ssl.SSLContext.wrap_socket()
该对象的方法。根据python版本的不同,支持的参数可能包括:server_hostname
suppress_ragged_eofs
do_handshake_on_connect
小心
使用sslcontext时,应将其从
gevent.ssl
或者需要对过程进行猴子修补。如果进程不是monkey补丁,并且您通过了标准库sslcontext,那么生成的客户机套接字将不与gevent协作。否则,假设关键字参数应用于
ssl.wrap_socket()
. 这些关键字参数可以包括:关键文件
证书文件
cert_reqs
ssl_version
ca_certs
suppress_ragged_eofs
do_handshake_on_connect
密码
在 1.2a2 版本发生变更: 为添加支持 ssl_context 关键字参数。