一个基于wsgi和fastcgi的iis python桥。
wfastcgi的Python项目详细描述
WFASTCGI
wfastcgi.py在IIS和python之间提供了一个桥梁 使用wsgi和fastcgi,类似于mod_python为apache http提供的功能 服务器。
它可以与任何支持wsgi的python web应用程序或框架一起使用, 并提供了通过IIS处理请求和处理池的有效方法。
安装
下载包
要通过python包索引(pypi)安装,请键入:
pip install wfastcgi
启用wfastcgi
安装wfastcgi和IIS后,以 管理员在IIS配置中启用wfastcgi。这个遗嘱 配置一个CGI应用程序,然后可以将其指定为 route handler。
wfastcgi-enable
要在卸载前禁用wfastcgi,请运行wfastcgi-disable。
wfastcgi-disable pip uninstall wfastcgi
注意:卸载wfastcgi不会自动注销CGI 申请。
如果传递给wfastcgi-enable或wfastcgi-disable的第一个参数是 一个有效的文件,整个命令行用于注册或注销CGI 处理程序。
例如,下面的命令将使用iis express和 特定主机配置:
wfastcgi-enable "C:\Program Files (x86)\IIS Express\appcmd.exe" /apphostconfig:C:\Path\To\applicationhost.config
您可以使用 wfastcgi-disable具有相同的选项:
wfastcgi-disable "C:\Program Files (x86)\IIS Express\appcmd.exe" /apphostconfig:C:\Path\To\applicationhost.config
路由处理程序
将请求路由到python应用程序需要一些本地站点 配置。在站点的web.config文件中,需要添加 处理程序和一些应用程序设置:
<configuration><system.webServer><handlers><addname="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 --><addkey="WSGI_HANDLER"value="my_app.wsgi_app()"/><addkey="PYTHONPATH"value="C:\MyApp"/><!-- Optional settings --><addkey="WSGI_LOG"value="C:\Logs\my_app.log"/><addkey="WSGI_RESTART_FILE_REGEX"value=".*((\.py)|(\.config))$"/><addkey="APPINSIGHTS_INSTRUMENTATIONKEY"value="__instrumentation_key__"/><addkey="DJANGO_SETTINGS_MODULE"value="my_app.settings"/><addkey="WSGI_PTVSD_SECRET"value="__secret_code__"/><addkey="WSGI_PTVSD_ADDRESS"value="ipaddress:port"/></appSettings></configuration>
scriptProcessor的值显示在 wfastcgi-enable,并且可能因机器而异。值为 path和verb也可以自定义以进一步限制请求 为此将使用此处理程序。
可以在嵌套的web.config文件中使用name值来排除此 处理程序。例如,将web.config添加到static/子目录 包含<remove name="Python FastCGI" />将阻止IIS服务 通过python应用程序的静态文件。
提供的应用程序设置转换为环境变量,可以 使用os.getenv从python应用程序访问。以下 变量由wfastcgi使用。
wsgi_处理程序
这是一个计算为wsgi应用程序对象的python名称。这是一个 一系列虚线名称,可以选择不使用参数调用。什么时候? 解析处理程序时,将使用以下步骤:
- 使用import加载尽可能多的名称。姓氏是 从未进口。
- 获取模块后,将检索剩余的每个名称作为 属性。如果名称后面跟着(),则在获取 下面的名字。
解析名称时的错误将作为一个简单的500错误页返回。 根据您的IIS配置,只有在 从同一台计算机访问站点。
蟒蛇
当此设置转换为环境时,python已在运行 变量,因此wfastcgi执行额外的处理以扩展环境 其值中的变量(包括从应用程序设置添加的变量)和要展开的变量 sys.path。
如果正在运行使用名为 除了PYTHONPATH之外,您还应该将此值指定为 PYTHONPATH。
wsgi日志
这是写入日志信息的可写文件的完整路径。 此日志记录效率不高,建议使用此设置 仅为调试目的指定。
wsgi_restart_file_regex
用于标识何时更改的正则表达式文件属于 网站如果属于站点的文件发生更改,则所有活动的CGI进程 将被终止,以便可以加载新文件。
默认情况下,包含所有*.py和*.config文件。指定空 用于禁用自动重新启动的字符串。
AppInsights仪表键
提供具有此值的检测密钥将启用请求跟踪 带Application Insights 你的整个网站。如果尚未安装applicationinsights 包中,警告将写入WSGI_LOG(如果启用),但站点将 运行正常。
application insights是一个低开销的监视系统,用于跟踪 应用程序的运行状况和性能。启用后,站点中的所有错误 将通过应用程序洞察报告。
Django_设置模块
部署使用django构建的站点时常用的注册表项。通常 django sites将把WSGI_HANDLER设置为 django.core.handlers.wsgi.WSGIHandler()并加载特定于应用程序的设置 通过此值指定的模块。
使用Django以外的框架的站点不需要指定此值。
wsgi_ptvsd_secret
在此处提供任意字符串并包括 ptvsd环境中的模块将 自动启用网站的远程调试。里面的绳子 应将应用程序设置视为密码,并需要提供 连接到正在运行的站点时。
wsgi_ptvsd_地址
当指定WSGI_PTVSD_SECRET时,此值也可以指定为 重写远程调试的默认侦听地址。默认情况下, 您的站点将监听localhost:5678,但在许多情况下,您可能需要 将其更改为0.0.0.0:some-port,以便远程附加。
记住,您还需要通过任何防火墙转发端口 您可能已经配置了。