问题标签 [wfastcgi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

python - 其他 IIS 站点中的错误,由于在 IIS 中托管 Python Web 应用程序后

我在 IIS 服务器中使用 Flask 和 fastcgi 部署了 Python Webservice,

https://medium.com/@bilalbayasut/deploying-python-web-app-flask-in-windows-server-iis-using-fastcgi-6c1873ae0ad8

它适用于 8080 端口在此处输入图像描述

但是其他现有的 IIS 应用程序在出现错误后停止运行

在此处输入图像描述

所以请帮我解决这个问题。

注意:我是 Python 新手。

0 投票
0 回答
184 浏览

python - Python Bottle WSGI 应用程序的全局变量和启动/停止代码

我有一个 Python 应用程序,它与基于 Windows 的许可程序连接,我需要为此 Python 应用程序提供一个基于 Web 的界面(使用 GET/POST 请求)。我使用 IIS 作为此接口的 Web 服务器,因为我们已经为通过 IIS 工作的其他应用程序提供了基于 Web 的接口。

为了使用这个基于 Windows 的许可程序,每个实例都必须进行资源密集型许可检查调用,然后授予许可。实例完成后,我必须进行资源密集型许可证释放调用,然后将许可证释放回池中。为了提高 Web 应用程序的速度,我希望每个调用只进行一次:Web 服务器启动时(授予许可证)一次,服务器停止时(释放许可证)一次。

根据我的阅读,我得出的结论是,使用 FastCGI(这可能是错误的)将解决具有单线程应用程序的一般设计需求,我将在其中维护我的许可证授予(与 CGI 相反,这需要每个请求的授予和释放)。我的应用程序非常简单,所以我选择了 Bottle 作为框架来构建我的应用程序。我正在使用 wfastcgi 将 Python WSGI 与 IIS 一起使用。

为了使启动/停止代码正常工作,我创建了以下web.config文件app.py

网络配置

应用程序.py

据我所知,这是可行的。但是,我觉得我的解决方案非常笨拙。我假设有一些干净的方法可以为 WSGI 注册启动/关闭代码。我也觉得我对全局mylicense变量的使用很糟糕,而且我应该能够更干净地将许可证对象传递到我的路由函数中。

谁能建议我如何才能做得更好/更清洁/更快/更强?

0 投票
0 回答
724 浏览

python - Flask apscheduler 在 IIS 上无法正常工作

我在使用生产网络服务器 (IIS) 让我的后台任务按预定时间间隔启动时遇到问题。

我的应用程序可以在内置的WerkzeugWeb 服务器上正常工作,但是当我部署到 IIS 时,后台任务不会每 5 分钟触发一次。相反,它将在网页加载后 5 分钟运行。这是因为我在 中初始化了调度程序__init__.py吗?

__init__.py

配置文件

网络配置

0 投票
3 回答
6313 浏览

python - python.exe - FastCGI 进程意外退出

我已经阅读了关于这个问题的所有帖子,在这里和 IIS 论坛上,也把它放到了谷歌的第二页......但仍然无法让它工作。

我想在 Windows server 2016 上的 IIS 中运行 Flask/Python 应用程序,但我不断收到此错误:

我设法让它在我的机器(Windows 10)上工作,但在服务器上不行。

环境

  • 视窗服务器 2016
  • IIS 10
  • 蟒蛇 3.8
  • wfastcgi 3.0.0
  • 烧瓶 1.1.1

我尝试了不同版本的 Python(3.6、3.7、3.8)。在我的 Windows 10 上,它运行 Python 3.7 并且运行良好。我不能使用 Python 3.4.2,正如其中一篇文章中所建议的那样,因为 Flask 在 3.5 或更高版本上运行,并且显然wfastcgi可以在我的机器上与 Python 3.7 一起正常工作。

我授予了对我的应用程序池以及我的 Web 应用程序文件夹和 Python 文件夹上的 IIS_IUSRS 的完全权限。

我也安装了 Microsoft C++ Build Tools。

并且IIS的配置已经通过“共享配置”从我的机器共享到服务器,所以一切都是一样的。我只是在配置文件中调整了一些路径。

我还尝试在 Flask WSGI 服务器上运行 Web 应用程序进行开发,它运行良好。

有谁知道我还能做什么?任何建议都会很好。

谢谢 :)

编辑:我添加了来自事件查看器的警告消息。

编辑:添加 web.config 文件

0 投票
1 回答
1071 浏览

python - 无法使用 Fast CGI (wfastcgi) 在 IIS 上托管 django。在浏览器中出现 500 错误

我无法在 IIS 中托管基本的 django 项目。我已经超过 2 天了,我们将非常感谢您的帮助 :)。

我在 IIS 中的应用程序开发下启用了 IIS、CGI 和其他。这是我通过以下命令创建一个简单的 django 项目后的文件夹结构:

文件夹结构:

我已将 wfastcgi.py 文件复制到我的项目文件夹中。

然后,我使用以下设置添加了一个名为“dijky”的网站 添加网站



在 IIS 中的机器名称下,单击 FastCGI 设置,并给出完整路径和参数,如下所示: FastCGI 设置



然后将环境变量设置为: 我什至尝试将 WSGI_HANDLER 设置为 dijky.wsgi.application,因为文件 C:\inetpub\wwwroot\dijky\dijky\wsgi.py 具有:FastCGI 属性 - 环境变量


两者都不起作用

我的 web.config XML 文件是:

启动服务器后,我无法看到我们在 127.0.0.1:8000 上获得的默认 django 页面。我在浏览器上尝试了 localhost:8007 但收到 500 错误。

任何可以提供帮助的专家。

0 投票
0 回答
187 浏览

python - 如何在没有互联网的服务器上安装 wfastcgi?

我必须安装 python 包 wfastcgi.py 才能让我的 web 应用程序在单个服务器上运行。我猜 IIS 和 Flask 工作正常。我尝试了很多方法,我不知道。我想用具体的指示重新开始。Pip 也不起作用,我通过 Anaconda3 使用 python。我需要做什么才能使 wfastcgi 工作?通过“工作”,我的意思是命令“wfastcgi-enable”在 cmd 中给出了肯定的答案。每个小费都是无价的。

非常感谢!

0 投票
0 回答
148 浏览

python - 是否可以在一个 Web 应用程序(python、pyodbc、flask)中连接到两台服务器?

我有一个问题:我连接到一台服务器上的数据库(那个应用程序正在运行)并且它工作正常。但是如果我想连接到其他服务器上的其他数据库,它就不起作用 - 弹出 500 错误。即使连接到数据库似乎也存在问题(已经完成了一些测试)。我正在使用 SQL Server 2012,但不知道下一步该做什么。

一些信息:

  • 服务器无法连接到互联网,所以每次安装都是一个痛苦的过程

  • 在第一个我的网络应用程序正在运行

  • 在第二台服务器上,我什么都没有——没有 python,没有烧瓶,没有 anaconda。只有我想要的 DB 和 SQL Server 2012。

  • 已在第二台服务器上启用 Windows 身份验证

  • 在普通计算机上作为运行程序,一切正常

甚至可以使用两个连接到两个不同的服务器吗?我是否必须在第二台服务器上安装 python 和 pyodbc 才能使其工作?

下面我显示代码片段:

尝试了很多,没有任何帮助。衷心感谢您的提示!

编辑

我想我已经尝试了所有想到的东西,并访问了每一个可能的网站,我认为它在某个地方有解决方案。自从我写了这篇文章,我发现了一些事情:

  • 问题肯定出在与 2 号服务器的连接上,因为我发现了获取错误日志的可能性,并且错误有“用户 'Domain\Server$' 登录失败”,所以这是肯定的

  • 日志中的登录名不存在于登录名中的安全选项卡中,我不知道它属于哪个,所以我不知道谁应该获得适当的权限以及如何做到这一点

  • 在第二台服务器上的 ms sql server 的日志中,我找到了原因:找不到与提供的名称匹配的登录名。

  • 两者都启用了 Windows 身份验证,而且 - 当我运行一个连接到 SQL Server(第二个)的程序并且它在第一台服务器(应用程序运行的地方)上运行时,它运行良好并且没有错误,使用trusted_connection =是的

任何想法可能是什么原因?我为此苦苦挣扎了很长时间,以至于我已经开始访问相同的地方并不断地询问相同的问题,但仍然没有答案。

感谢芽的每一个提示!

0 投票
1 回答
250 浏览

python - 在 IIS10 和 Windows Server 2019 上停止使用 Flask 下载较大的静态文件

在尝试了一天网络上的各种提示之后,我对此一无所知:我有一个最简单的 Flask 应用程序,提供一个静态 600MB 文件供下载。大约 1,5-2 分钟或大约 80-280MB(所以在相同数量的字节或秒之后根本不会)下载停止并且客户端获得 HTTP 500(根据 IIS 日志)。

  • 如果我在该 IIS 上从静态网站(根本不涉及 python 或烧瓶)提供相同的文件,则下载完成。
  • 如果我在与本地服务器相同的机器上启动烧瓶(当然,通过 localhost 访问它),一切运行良好。
  • 如果我在运行 Windows Server 2012R2 和 IIS 8.5 的第二台服务器上提供相同的应用程序,它可以正常工作。
  • wfastcgi 日志没有显示任何错误,flask 也没有抛出任何异常。

代码相当简单:

__init_.py

模板下的index.html :

如果还尝试显式使用烧瓶的 send_from_directory -> 相同的区别。

我已将我知道的所有超时设置为至少 5 分钟:ApplicationPool 的超时、站点的连接超时,甚至 system.applicationHost/webLimits 下的连接超时。我也将 minBytesPerSecond 更改为 0。

Web 服务器是安装了 wfastcgi 的 Windows Server 2019 上的 IIS 10。该问题发生在 HTTPS 和 HTTP 上。对于 https:打开或关闭 HTTP/2 没有效果。我在客户端站点上使用了当前的 Firefox、Chrome 和 iOS Safari,没有区别。

版本是:Python 3.6.4(我也尝试过 3.7.x)Flask 1.1.1 Werkzeug 1.0.1 wfastcgi 3.0.0。这些版本与它工作的旧 IIS 8.5 上的版本完全相同。

更改操作系统在这里不是一个选项,更改网络服务器至少会是一个巨大的痛苦。

任何关于如何调试下载失败的位置和原因的建议(我什至不确定此时是否仍涉及烧瓶)将不胜感激。IIS 日志和 wfastcgi 日志都不再给我任何想法。

0 投票
1 回答
237 浏览

python-3.x - 使用 FastCGI 在 IIS 上使用 flask-login 随机注销

我正在使用 IIS 在 Windows Server 2019 上运行 Dash/Flask 应用程序。我用 CGI 安装了 IIS,在应用程序的虚拟环境中安装了 wfastcgi,以管理员身份运行 wfastcgi-enable,并使用虚拟环境的 python 可执行文件和 wfastcgi.py 文件等在 web.config 中将 FastCGI 应用程序指定为路由处理程序。

一切顺利,应用程序已启动并运行。如果用户注销,应用程序将重定向到“/”以登录。当我在 Flask 的内置服务器上运行应用程序时,这一切都可以正常工作,但只能在这个 IIS/ fastcgi 设置。我使用flask-login 登录和验证用户,密切关注此处给出的示例:https ://github.com/RafaelMiquelino/dash-flask-login 。

我还尝试配置烧瓶登录的记住我功能以在浏览器关闭后保持登录,但这并没有改变上述问题。

有没有其他人经历过这个?我愿意接受任何关于我为什么会在 IIS 和 FastCGI 中遇到这种奇怪的(会话?)行为的想法。谢谢!

编辑:

而且,我又做了一些测试,发现不仅是随机注销,还有某种“随机登录”: 1.用户在登录页面登录并重定向到位于/成功下的“真实”内容:消息: 用户无法通过身份验证。2.重新加载网页“/success”,无需任何进一步操作:用户通过身份验证,可以看到内容。在重复重新加载相同的用户后,随机验证或不验证。

0 投票
1 回答
50 浏览

python - 迭代其字符时,字符串(取自 python wsgi 环境)如何不同?

我们最近遇到了这样一种情况,即遍历字符串(例如list(some_string))会得到与直接打印完全不同的东西some_string。这怎么会发生?

一些背景知识:我们正在使用 wfastcgi 在 IIS 上运行 Python Web 应用程序,应用程序服务器位于负载均衡器后面。我们在应用程序服务器的内部和负载均衡器的外部主机出现在应用程序的不同部分时遇到了一些问题,因此为了缩小范围,我们编写了一个小型 wsgi 服务器来查看内部传递的确切内容。

这是模块,再次在 IIS 上使用 wfastcgi 运行:

而且,看这疯狂,这是回应:

我们使用其他迭代字符串的方法得到相同的结果,比如 for 循环或列表推导,或者仅使用len().

除了是什么导致这些特定值出现在我们的设置中的问题之外——这在 python 中怎么会发生呢?

这是在 IIS 10、python 3.6.8 和 wfastcgi 3.0.0 上。