基于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-enable 或 wfastcgi-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 的输出中,并且可能因计算机而异。对于 path 和 verb 的值也可以进行自定义,以进一步限制此处理程序将用于哪些请求。
可以使用 name 值在嵌套的 web.config 文件中排除此处理程序。例如,在您的 static/ 子目录中添加一个包含 <remove name="Python FastCGI" /> 的 web.config,将阻止 IIS 通过您的 Python 应用程序提供静态文件。
提供的应用程序设置被转换为环境变量,并可以使用 os.getenv 从您的 Python 应用程序中访问。以下变量被 wfastcgi 使用。
WSGI_HANDLER
这是一个 Python 名称,评估为 WSGI 应用程序对象。它是一系列可选不带参数调用的点名称。在解析处理程序时,使用以下步骤
尽可能多地使用 import 加载名称。最后一个名称永远不会导入。
一旦获得一个模块,每个剩余的名称都将作为属性检索。如果名称后面跟着 (),则在获取下一个名称之前调用它。
解析名称时发生的错误将返回一个简单的 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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | cbce266e7da411d40f98f28a73cb9a55157b274398bd5a8d2b25cfa10a4dd493 |
|
MD5 | 289c81d809e87dc3e22cf81c5ba951fe |
|
BLAKE2b-256 | fbc7c67ab1c936b6294c3692d891ff6d4df1b82254a98f00e2cb72083b1ad796 |