python服务器。重新设计。
reserve的Python项目详细描述
reserve是一个genericpython服务器(和服务器库)。这意味着它能够托管任何类型的应用程序,而不仅仅是像web这样的wsgi应用程序。
要求:
- sdlaunch-reserve不包含套接字打开或守护代码,这取决于sdlaunch(或者您可以使用systemd socket activation)
- fdsocket-python的sockets在从文件描述符创建它们时,要求用户提供一些python无法获得的信息,但很容易从c获得。fdsocket提供了这些信息。
用法
sdlaunch -b "[::]:80" -- reserve app [args...]
其中:
- ::是要侦听的IPv6地址(::表示全部)
- 80是端口
- app是要服务的应用程序的名称
- [args...]是要传递给应用程序的参数列表(可选)
应用程序定义
应用程序是一个包含launch(args)callable的python模块,其中args是字符串数组。
它应该返回一个可调用的请求处理程序-handle(socket, client_address, server),其中:
- socket是新打开的套接字
- client_address是包含客户端IP和端口的元组
- server是一个tcpserver对象,您可能不应该触摸它
捆绑应用程序
reserve当前仅捆绑一个reserve app-http。它与wsgi子应用程序一起可用于服务WSGI应用程序
用于编写http子应用程序的API目前没有文档记录,被认为是一个实现细节你不应该使用它,因为它可能在将来的任何时候都会改变。不过,您可以将它与wsgi-一起使用,因为它保证保持向后兼容。
提供wsgi应用程序
sdlaunch -b "[::]:80" -- reserve app http wsgi wsgi-app-name [args...]
其中wsgi-app-name是一个python模块,它包含一个launch(args)可调用(类似于普通的reserve应用程序)
它应该返回一个可调用的wsgi(pep 3333)应用程序。
警告:不应在生产中使用reserve.http。您应该将应用程序作为SCGI/FCGI/…来使用,而应该使用真正的web服务器作为前端
reserve目前不支持scgi/fcgi/…,但在不久的将来会支持。