gevent.server --TCP/SSL服务器#

TCP/SSL服务器

class DatagramServer(*args, **kwargs)[源代码]#

基类:BaseServer

UDP服务器

init_socket()[源代码]#

如果用户使用地址而不是套接字初始化服务器,则此函数必须创建一个套接字,绑定它,并将其置于侦听模式。

它不应该由用户调用,而是由 start() 在开始接受循环之前。

class StreamServer(listener, handle=None, backlog=None, spawn='default', **ssl_args)[源代码]#

基类:BaseServer

通用TCP服务器。

接受侦听套接字上的连接并生成用户提供的连接 手柄 每个连接的函数有两个参数:客户机套接字和客户机地址。

请注意,尽管成功生成的处理程序中的错误不会影响服务器或其他连接,但由 accept()产卵 导致服务器在短时间内停止接受。确切的周期取决于 min_delaymax_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 关键字参数。

init_socket()[源代码]#

如果用户使用地址而不是套接字初始化服务器,则此函数必须创建一个套接字,绑定它,并将其置于侦听模式。

它不应该由用户调用,而是由 start() 在开始接受循环之前。