一个基于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

安装iis和fastcgi

参见IIS Installation页 有关在您的Windows版本上安装IIS的信息。

应用程序开发/cgi包需要与wfastcgi一起使用。

启用wfastcgi

安装wfastcgi和IIS后,以 管理员在IIS配置中启用wfastcgi。这个遗嘱 配置一个CGI应用程序,然后可以将其指定为 route handler

wfastcgi-enable

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

wfastcgi-disable
pip uninstall wfastcgi

注意:卸载wfastcgi不会自动注销CGI 申请。

如果传递给wfastcgi-enablewfastcgi-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,并且可能因机器而异。值为 pathverb也可以自定义以进一步限制请求 为此将使用此处理程序。

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

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

wsgi_处理程序

这是一个计算为wsgi应用程序对象的python名称。这是一个 一系列虚线名称,可以选择不使用参数调用。什么时候? 解析处理程序时,将使用以下步骤:

  1. 使用import加载尽可能多的名称。姓氏是 从未进口。
  2. 获取模块后,将检索剩余的每个名称作为 属性。如果名称后面跟着(),则在获取 下面的名字。

解析名称时的错误将作为一个简单的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,以便远程附加。

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
解释java选择方法   连接到127.0.0.1的java间歇性故障,连接到IP(eth0)时没有故障   java如何优雅地杀死hadoop作业/intercept`hadoop作业杀死`   java如何通过引导类加载器以编程方式加载另一个类?   url Java:在查询参数之前使用片段构建URI   在BroadLeaf表blc_order_属性中保存OrderAttributes值时发生java错误   安卓将功能从xml转换为java   java如何将数据写入文件?   java JPA SQL结果映射   Java中整数对象比较运算符的引用安全性   Spring测试失败:java。lang.NoClassDefFoundError:org/springframework/cglib/transform/impl/memorysafuendecaredthrowableStrategy   rich:extendedDataTable中的java行选择和数据处理   java为什么我需要在volatile上对多个线程使用synchronized?   java尽管构建成功,但为什么会出现此错误?   数组$ArrayList不能转换为java。util。java中的ArrayList   java如何根据泛型类型调用方法?   java将JLabel添加到JPanel,将JPanel添加到JFrame   如果MapStruct中的源为null,则java将父目标设置为null   JavaJBossDrools从DRL插入事实   java不同的JRE安装(windows)