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无法在安卓 Studio中为安卓:onClick执行方法   传真我如何以编程方式接收传真?最好是java语言   开源如何向标准java库中添加任何类?   多线程Java执行器在上一个完成后执行一个可调用的?   java广播接收器在后台不工作   java替换元素   删除文件。java Maven项目   java不同语言   linux告诉java要听哪个键盘   数组Java 8流,仅第一次获取max()需要很长时间   从Stubbed@SpringBean返回的java Spock+Spring存根始终返回null   java为什么EnumMap为空值分配对象类对象?   使用Java对话框查找最小值和最大值   支持新旧安卓版本的java Copy with clipboard manager?   它显示了桌面版本。我想展示手机版(现在可以了)   java如何从文本文件中读取一行,调用该行上的函数并移动到第二行,等等?   java如何为体育项目编写深度图表和列表?   java如何创建IntentService来检查GoogleAppClient是否为空