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 Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误