- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个 Python Flask 应用程序在 Azure 中作为应用服务运行。我们最近将解决方案升级到 VS 2017。这更改了 python 项目中的一些配置文件,现在当我们发布时,我们得到:
HTTP Error 500.0 - Internal Server Error scriptProcessor could not be found in application configurationDetailed Error Information:Module FastCgiModuleNotification ExecuteRequestHandlerHandler PythonHandlerError Code 0x80070585Requested URL http://OcvCluster-int__b155:80/handler.fcgi/Physical Path D:\home\site\wwwroot\handler.fcgi\Logon Method AnonymousLogon User AnonymousRequest Tracing Directory D:\home\LogFiles
If I go back to an old (pre-upgrade) version I can publish from 2015. I can’t, however, open the latest master in 2015, so I am unable to publish changes we need in our service.
I have spent a full day going through articles like:
https://learn.microsoft.com/en-us/visualstudio/python/managing-python-on-azure-app-servicehttps://learn.microsoft.com/en-us/visualstudio/python/publishing-to-azure
Trying many things with reg to updating my web.config.
Is there any information on what the upgrade path should be here? We are broken. Things that confuse me:
• Tutorials on publishing Flask apps to VS state that you need to install Python as an extension on the App Service. Is that new? We have not been doing that previously.
• We have a bunch of custom libraries in our env folder. In VS2015, those are uploaded as part of the publish process. When I publish from VS 2017 I don’t see that happening (though they are still there from previous publishes)
• Some forum posts have talked about having to point to the interpreter in the application.config. Our app does not have an application.config.
Here is my web.config (with the comments indicating where I have been experimenting).
<?xml version="1.0"?>
<!-- Generated web.config for Microsoft Azure. Remove this comment to prevent
modifications being overwritten when publishing the project.
-->
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
<appSettings>
<add key="WSGI_ALT_VIRTUALENV_HANDLER" value="redacted.app" />
<add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS" value="D:\home\site\wwwroot\env3\Scripts\python.exe" />
<add key="WSGI_HANDLER" value="ptvs_virtualenv_proxy.get_venv_handler()" />
<!--add key="WSGI_HANDLER" value="redacted.app" />-->
<add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
<!--<add key="PYTHONPATH" value="%ROOTDIR%;%ROOTDIR%\redacted;%ROOTDIR%\redacted\Clusterer\" />-->
<add key="PYTHONPATH" value="D:\home; D:\home\site;D:\home\site\redacted;D:\home\site\redacted\Clusterer\" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<httpErrors errorMode="Detailed"></httpErrors>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<!--<add name="Python FastCGI" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="%INTERPRETERPATH%|%WFASTCGIPATH%" resourceType="Unspecified" requireAccess="Script" />-->
<add name="PythonHandler" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python354x64\python.exe|D:\home\python354x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
</handlers>
<httpPlatform processPath="D:\home\python354x64\python.exe"
arguments="D:\home\site\wwwroot\runserver.py"
stdoutLogEnabled="true"
stdoutLogFile="D:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
<rewrite>
<rules>
<rule name="Static Files" stopProcessing="true">
<match url="^/static/.*" ignoreCase="true" />
<action type="Rewrite" url="^/redacted/static/.*" appendQueryString="true" />
</rule>
<rule name="Configure Python" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
</conditions>
<action type="Rewrite" url="handler.fcgi/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
谢谢,〜约翰
最佳答案
正如您在 Managing Python on Azure App Service 中找到的那样:
尽管应用服务默认在服务器的根文件夹中安装了 Python 2.7 和 Python 3.4,但您无法在这些环境中自定义或安装包。
因此,Azure 应用服务建议您现在依赖站点扩展
。
据我所知,我们可以在requirements.txt
文件中列出程序所依赖的python包的版本。当项目部署到 Azure 时,这些包将下载到 env
文件夹中。
但是,这现在不适用于网站扩展
。您可以在 KUDU 控制台
上安装软件包。请引用我之前的步骤。
第 1 步:创建 Azure Web 应用程序并添加扩展(此处为 Python 3.6.1 x64)
第 2 步:发布您的 flask
项目并添加 web.config
。
网络配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="WSGI_HANDLER" value="<Your Project Name>.app"/>
<add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
<add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
</appSettings>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
</handlers>
</system.webServer>
</configuration>
第3步:切换到Kudu CMD并命令cd Python361x64
和touch get-pip.py
并复制url内容https://通过编辑按钮将 bootstrap.pypa.io/get-pip.py
复制到 get-pip.py
中,然后运行 python get-pip.py
进行安装点工具。
第 4 步:通过 python -m pip install pyodbc 安装 pyodbc 软件包或任何您需要的软件包
此外,我注意到 web.config 中的 PYTHONPATH
配置不包含应用程序的根路径,即 D:\home\site\wwwroot
。 PYTHONPATH
的值可以自由扩展,但必须包含应用程序的根目录。
并且您需要检查映射到 scriptProcessor 的路径中的 Python Interpreter 是否存在。
希望对您有帮助。如有任何疑问,请告诉我。
关于将项目从 VS 2015 升级到 2017 后,Azure 上的 Python Flask 应用程序损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48387711/
我正在遵循Flask-potion教程并尝试保护我的api。我一直试图找出如何在User端点上设置权限,以使一个User无法查看另一个User的记录。这是我的代码: class UserResourc
项目设置 Python 3.5.3 flask 0.12.2 目录 . ├── Core │ ├── BackgroundProcessManager.py │ ├── FirebaseDat
我正在构建 flask 应用程序并决定这次尝试应用程序工厂方法,但是遇到了 flask 迁移的麻烦并且无法找出简单的解决方案。 请注意,我想将配置位置作为选项传递给脚本 管理.py: manager
我尝试通过以下示例代码来熟悉Flask-APScheduler插件:https://github.com/viniciuschiele/flask-apscheduler/blob/master/ex
我一周前刚刚了解了 Flask 和 JWT,所以我真的需要一些帮助。有人可以解释一下flask-jwt和flask-jwt-extended之间的区别吗? 最佳答案 Flask-JWT 没有那么多功能
我是 Flask 的新手,我只是想用它创建一个简单的市场。我的网站上有三种类型的用户 [卖家、买家、管理员]。我认为每种类型的用户都应该有自己的注册和登录,因为他们的角色应该提供不同类型的信息。另一方
基本上,我想做一些非常简单的事情:我想创建一个用于删除数据库中条目的表单。 模板正在创建一个包含所有条目的html表,没有任何麻烦。我现在的问题是:如何将其转换为每行都有链接的表单。 当然,我可以通过
我对Flask来说非常陌生,其中一个基本要求是我需要SEO友好的URL。 我说一条路线 @app.route('/sales/') @app.route(/sales/) def get_sales(
一直在为用户管理系统开发Flask-user,但是我看不到自定义登录页面和注册页面的方法。我使用pip安装了flask-user pip install flask-user 任何帮助,将不胜感激 最
我有一个奇怪的情况,不知道如何找到问题。 我已经创建了一个这样的蓝图 reportjobsmod = Blueprint('jobreports', __name__, url_prefix='/jo
我认为在 Flask 中拥有实例变量的正确方法是添加用户和 session ,但我正在尝试测试一个概念,我还不想经历所有这些。我试图让一个网络应用程序将图像加载到一个变量中,然后可以对其执行不同的图像
select = SelectField("City") form.select.choices = [(places['name'], places['name']) for places in p
这个问题在这里已经有了答案: Provide extra information to Flask's app.logger (2 个回答) 3年前关闭。 我正在运行一个 flask 应用程序。我想写
我当时正在编程一个非常不错的api,使用json从游戏服务器到我的网站空间获取一些json数据, 但是每次我使用angular发送请求时,我都会得到以下信息:127.0.0.1--[20 / Mar
我已经开发了一个上传表单,以将特定的.xlsx文件作为上传。要求是要处理非xlsx上载的任何异常(例如zip,exe文件)。我正在使用pyexcel库读取上传内容。我尝试创建以下代码来处理此异常: e
我使用此功能在网站上捕获404错误: @app.errorhandler(404) def page_not_found(e): logger.warning('User raised an
我正在尝试同时使用 Flask Restful 和 Flask SocketIO。我已经制作了一个 Flask Restful 应用程序,但现在我想使用 Flask SocketIO 在客户端和我的服
我有一些 Flask 应用程序,我通过设置 FLASK_APP 来运行它们。环境变量和调用 flask run .自 FLASK_DEBUG也设置了,每当我更改一些代码时,应用程序都可以方便地重新加载
我目前正在使用 Flask 构建一个应用程序。我正在努力访问 Flask 实例“app”以及 Flask-mail 实例“mail”。 下面是我的项目的样子: └── my-project ├
Remember-me是 parameter flask_login.login_user(user, remember=False, duration=None, force=False, fres
我是一名优秀的程序员,十分优秀!