这是我第一次将 Flask Web 应用程序部署到 Azure。我按照这个教程进行了操作。
他们的默认演示应用程序对我来说效果很好。
之后,我通过 git 推送了 Flask 应用程序。日志显示部署成功。但是,当我通过“应用程序属性”中提供的链接浏览托管应用程序时,出现 500 错误,如下所示:
由于发生内部服务器错误,该页面无法显示。
最可能的原因:IIS收到请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于哪个模块处理请求以及发生此错误时工作进程中发生的情况。IIS 无法访问网站或应用程序的 web.config 文件。如果 NTFS 权限设置不正确,则可能会发生这种情况。IIS 无法处理网站或应用程序的配置。经过身份验证的用户无权使用此 DLL。该请求已映射到托管处理程序,但未安装 .NET 扩展性功能。
通过 KUDU 浏览 wwwroot,我看到的唯一不合理的事情是,尽管 wwwroot 中存在“requirements.txt”文件,但我在本地虚拟环境中安装的软件包都没有安装在 Azure 上。
我的理解是,在 GIT 成功推送后,Azure 会 pip 安装在 requests.txt 中找到的任何不存在的包。但这似乎并没有发生在我身上。
我是否做错了什么,丢失的包裹只是一个症状,还是可能是问题的原因?
笔记:
我的 Flask 应用程序在本地(linux)和第 3 方 VPS 上运行良好
我从头开始重新部署了好几次都没有用(我用的是本地GIT方法)
我在本地克隆了 Azure Flask 演示应用程序,仅更改了应用程序文件夹并推送回 Azure,但没有成功。
Azure 设置为 Python 2.7 与我本地的虚拟环境相同
正如上面链接的教程中所建议的,我删除了“env”文件夹并重新部署以欺骗 Azure 重新安装虚拟环境。它确实做到了,但有自己的默认包,而不是我的requirements.txt中的包。
我的requirements.txt有以下内容:
bcrypt==3.1.0 cffi==1.7.0 click==6.6 Flask==0.11.1 Flask-Bcrypt==0.7.1 Flask-Login==0.3.2 Flask-SQLAlchemy==2.1 Flask-WTF==0.12它的危险==0.24 Jinja2==2.8 MarkupSafe==0.23 pycparser==2.14 PyMySQL==0.7.7 python-http-client==1.2.3 六==1.10.0 …
我正在将 Javascript 用于 Parse.com 云代码。根据 Parse.com,他们返回 UTC 时间。我现在是东部夏令时间 (GMT -4)
我试图在午夜获取今天的日期,但没有成功。这是我的代码:
var date = new Date();
var startDay = Math.floor((date.setUTCHours(4,0,0,0) / 1000));
Run Code Online (Sandbox Code Playgroud)
因此,每天晚上 8 点之前,代码会在午夜返回今天的日期,这正是我想要的。但是,晚上 8 点之后,它会在午夜返回明天的日期。我相信原因是由于 UTC 日期在午夜更改为 Today+1。但我不知道如何以在午夜获得当地日期的方式解决这个问题。
PS:我也尝试过setHours(4,0,0,0)
,没成功。如果我使用setUTCHours(0,0,0,0)
它,则会返回今天晚上 8 点的日期
感谢您的帮助。