scgi规范的sans-i/o实现。

sioscgi的Python项目详细描述


什么是西斯科吉?

sioscgi是简单公共网关接口(SCGI)的一个实现 sans-i/o理念下的协议。

什么是scgi?

scgi是一种用于http服务器和web之间通信的协议。 应用。与cgi相比,scgi效率更高,因为它不分叉 并为每个请求执行应用程序的单独实例;相反, 应用程序提前启动并接收多个请求 (顺序地或同时地)通过套接字连接。与 SCGI是一个简单得多的协议,因为它使用一个单独的套接字 每个请求的连接,而不是包含在单个 连接到多路复用请求(FastCGI中很少使用的功能 无论如何,由于缺少每个请求的流控制)

有关详细信息,请参阅WikipediaPythonSCGI页

什么是SAN-I/O?

Sans-I/O是开发协议处理库的一种理念,其中 库不做任何I/O操作,而是由库的用户负责 用于在套接字或管道与协议之间传输字节块 库,用于接收和发送应用程序级协议项 他们去图书馆。这显然使sans-I/O库更加 很难使用,但它的优点是同一个库可以 与任何I/O和并发机制一起使用:同一个库应该是可用的 在单请求一次服务器中,每个请求的进程或 每个请求的线程阻塞服务器,使用select/poll和 延续,或使用异步、twisted或任何其他异步的服务器 框架

有关详细信息,请参见SansIO

如何安装?

sioscgi的版本发布在pypi上,通过pip安装。你可以 运行pip install sioscgi

对于开发,可以在GitLabGitHub找到源代码。

我怎么用?

一般来说,如下所示:

  1. 接受来自http服务器(或其他scgi客户端)的scgi连接。
  2. 构造一个SCGIConnection对象。
  3. 通过重复以下步骤从scgi客户端接收请求,直到 RequestEnd事件发生:
    1. 从连接中读取一些字节并将它们传递给 SCGIConnection.receive_data
    2. 调用SCGIConnection.next_event接收高级事件 对应于接收的数据(一个RequestHeaders,零个或多个 RequestBody事件和一个RequestEnd)。
  4. 使用SCGIConnection.send将响应发送到SCGI客户端,发送 首先是一个ResponseHeaders事件,然后是零个或多个ResponseBody事件, 然后是一个ResponseEnd事件,并通过 连接。

这是一个sans-i/o库,具体如何实现每个步骤取决于 关于您正在使用的I/O和应用程序框架。例如,对于 每个请求的线程数或每个请求服务器的进程数,您可能会 在步骤3.1中阻止从正常函数接收;在基于异步的服务器中 相反,您应该awaitcoroutine中的新数据。

有关可用类和方法的详细信息,请参见 通过运行^{tt14}在docstrings中提供的模块文档$ 后跟help(sioscgi)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用工厂设计模式   解析服务器安全性的java最佳实践   java如何解决由于某种原因导致的执行失败?   关于Servlet的java   如何在java中生成一个大的(30MB+)xml文件?   匿名类重写与传递接口,用于在Java中设计回调   java jar从运行时开始。getRuntime()。exec()比从命令行运行的时间长   java Ant脚本排除文件夹(某些文件除外)   java在Windows 10计算机上运行时遇到Maven错误   java Hibernate在同一个表中级联   java PayPal API设置返回URL   java如何在选项卡的右侧显示关闭按钮   当按下Jmenu按钮时,使用java操作侦听器退出程序