跳转到主要内容

基于WSGI和FastCGI的IIS-Python网关。

项目描述

WFastCGI

wfastcgi.py通过WSGI和FastCGI在IIS和Python之间提供桥梁,类似于mod_python为Apache HTTP服务器提供的功能。

它可以与任何支持WSGI的Python Web应用程序或框架一起使用,并通过IIS提供一种高效的方式来处理请求和处理池。

安装

下载包

要通过Python包索引(PyPI)安装,请键入

pip install wfastcgi

安装IIS和FastCGI

有关在您的Windows版本上安装IIS的信息,请参阅IIS安装页面。

需要应用程序开发/CGI包才能与WFastCGI一起使用。

启用wfastcgi

一旦安装了wfastcgi和IIS,以管理员身份运行wfastcgi-enable以在IIS配置中启用wfastcgi。这将配置一个CGI应用程序,然后可以指定为路由处理程序

wfastcgi-enable

在卸载之前禁用wfastcgi,请运行wfastcgi-disable

wfastcgi-disable
pip uninstall wfastcgi

注意:卸载 wfastcgi 并不会自动注销 CGI 应用程序。

如果传递给 wfastcgi-enablewfastcgi-disable 的第一个参数是一个有效的文件,整个命令行将用于注册或注销 CGI 处理程序。

例如,以下命令将启用 wfastcgi 并与 IIS Express 和特定的主机配置一起使用

wfastcgi-enable "C:\Program Files (x86)\IIS Express\appcmd.exe"
    /apphostconfig:C:\Path\To\applicationhost.config

您可以使用具有相同选项的 wfastcgi-disable 在同一配置文件中禁用 wfastcgi

wfastcgi-disable "C:\Program Files (x86)\IIS Express\appcmd.exe"
    /apphostconfig:C:\Path\To\applicationhost.config

路由处理程序

将请求路由到您的 Python 应用程序需要一些本地站点配置。在您的站点 web.config 文件中,您需要添加一个处理程序和一些应用程序设置

<configuration>
  <system.webServer>
    <handlers>
      <add name="Python FastCGI"
           path="*"
           verb="*"
           modules="FastCgiModule"
           scriptProcessor="C:\Python36\python.exe|C:\Python36\Lib\site-packages\wfastcgi.py"
           resourceType="Unspecified"
           requireAccess="Script" />
    </handlers>
  </system.webServer>

  <appSettings>
    <!-- Required settings -->
    <add key="WSGI_HANDLER" value="my_app.wsgi_app()" />
    <add key="PYTHONPATH" value="C:\MyApp" />

    <!-- Optional settings -->
    <add key="WSGI_LOG" value="C:\Logs\my_app.log" />
    <add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />
    <add key="APPINSIGHTS_INSTRUMENTATIONKEY" value="__instrumentation_key__" />
    <add key="DJANGO_SETTINGS_MODULE" value="my_app.settings" />
    <add key="WSGI_PTVSD_SECRET" value="__secret_code__" />
    <add key="WSGI_PTVSD_ADDRESS" value="ipaddress:port" />
  </appSettings>
</configuration>

scriptProcessor 的值显示在 wfastcgi-enable 的输出中,并且可能因计算机而异。对于 pathverb 的值也可以进行自定义,以进一步限制此处理程序将用于哪些请求。

可以使用 name 值在嵌套的 web.config 文件中排除此处理程序。例如,在您的 static/ 子目录中添加一个包含 <remove name="Python FastCGI" />web.config,将阻止 IIS 通过您的 Python 应用程序提供静态文件。

提供的应用程序设置被转换为环境变量,并可以使用 os.getenv 从您的 Python 应用程序中访问。以下变量被 wfastcgi 使用。

WSGI_HANDLER

这是一个 Python 名称,评估为 WSGI 应用程序对象。它是一系列可选不带参数调用的点名称。在解析处理程序时,使用以下步骤

  1. 尽可能多地使用 import 加载名称。最后一个名称永远不会导入。

  2. 一旦获得一个模块,每个剩余的名称都将作为属性检索。如果名称后面跟着 (),则在获取下一个名称之前调用它。

解析名称时发生的错误将返回一个简单的 500 错误页面。根据您的 IIS 配置,您可能只有在从同一台机器访问站点时才会收到此页面。

PYTHONPATH

当此设置转换为环境变量时,Python 已经正在运行,因此 wfastcgi 对其值(包括从应用程序设置中添加的)中的环境变量进行额外的处理,并扩展 sys.path

如果您正在运行使用除 PYTHONPATH 之外命名的变量的 Python 实现,您仍然应该将此值指定为 PYTHONPATH

WSGI_LOG

这是一个可写文件的完整路径,其中记录了日志信息。此日志记录效率不高,建议仅为此目的指定此设置。

WSGI_RESTART_FILE_REGEX

用于识别更改的文件属于您的网站的正则表达式。如果属于您的网站的文件发生更改,所有活动的 CGI 进程都将终止,以便可以加载新文件。

默认情况下,包括所有 *.py*.config 文件。指定空字符串以禁用自动重启。

APPINSIGHTS_INSTRUMENTATIONKEY

提供具有该值的仪器密钥将启用对整个站点的请求跟踪,通过Application Insights。如果您尚未安装applicationinsights包,则会将警告写入WSGI_LOG(如果已启用),但站点将正常运行。

Application Insights 是一个低开销的监控系统,用于跟踪您应用程序的健康状况和性能。启用后,您的站点的所有错误将通过 Application Insights 报告。

DJANGO_SETTINGS_MODULE

这是在部署使用 Django 构建的站点时常用的注册密钥。通常,Django 站点会将WSGI_HANDLER设置为django.core.handlers.wsgi.WSGIHandler(),并通过指定此值加载特定于应用程序的设置。

使用除 Django 以外的框架的站点不需要指定此值。

WSGI_PTVSD_SECRET

在此处提供一个任意字符串,并将ptvsd模块包含在您的环境中,将自动启用对您的网站的远程调试。此应用程序设置中的字符串应被视为密码,并在附加到正在运行的站点时需要提供。

WSGI_PTVSD_ADDRESS

当指定WSGI_PTVSD_SECRET时,还可以指定此值以覆盖远程调试的默认监听地址。默认情况下,您的站点将在localhost:5678上监听,但在许多情况下,您可能需要将其更改为0.0.0.0:some-port以进行远程附加。

请记住,您还需要通过您可能已配置的任何防火墙转发端口。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

wfastcgi-3.0.0.tar.gz (14.7 kB 查看散列)

上传时间

支持者