Zappa部署错误:GET请求产生502响应代码

时间:2018-06-19 22:50:40

标签: python amazon-web-services aws-lambda zappa flask-ask

我正在尝试部署使用Flask-Ask构建的第一个zappa示例应用程序,看起来一切正常,但是在Deploying API语句之后,出现以下错误:

错误:警告!部署的lambda的状态检查失败。对“ /”的GET请求 产生了502个响应代码。

这是我正在执行的代码,对示例应用程序进行了较小的更改

from flask import Flask
from flask_ask import Ask, question, statement, session
import pyodbc

app = Flask(name)
ask = Ask(app, '/')

@ask.intent('HelloIntent')
def hello(firstname):
speech_text = "Hello %s" % firstname
return statement(speech_text).simple_card('Hello', speech_text)

@ask.intent('ByeIntent')
def bye():
return statement("Ok, goodBye!")



if name == 'main':
app.run()
  • 使用的Zappa版本:0.46.1
  • 操作系统和Python版本:Windows 7,Python 3.6

有人可以帮我吗?

11 个答案:

答案 0 :(得分:2)

尝试在使用zappa的虚拟环境中使用pip安装所有依赖项。就我而言,它奏效了。

您还可以使用zappa tail命令查看日志。

答案 1 :(得分:1)

github issue似乎具有相同的症状。 降级为zappa==0.45.1可以为我解决

答案 2 :(得分:1)

如果使用的是anaconda,则在项目目录和“脚本/激活”中创建一个新的虚拟环境“ virtualenv lambda”。比使用“ conda deactivate”停用conda环境,然后pip安装所有软件包“ pip install numpy pandas sklearn zappa flask”。

PS:使用“ slim_handle” = true也会出现此错误,因此请不要使用它。

答案 3 :(得分:1)

如果以上所有方法均无效,则可以通过这种方式解决。

  • 如果有任何错误,请先通过zappa tail [app name]检查应用日志来解决所有错误

然后, 您必须在"app_function"中提供zappa_settings.json参数,该参数应指向您的输入函数。如果应用程序为Flask __init__.application,则应按以下方式提供app_function,因此烧瓶应用程序应按以下方式定义为application

application = Flask(__name__)

app.py应该为__init__.py 您必须添加__init__.py才能将项目文件夹识别为包。 因此zappa_settings.json具有这样的参数

"app_function": "__init__.application",

部署并享受吧!

答案 4 :(得分:0)

我有同样的问题。花了几个小时之后,从cloudwatch日志中,我注意到sec证书的错误。通过运行“ pip install'cryptography <2.2'”解决了该问题

答案 5 :(得分:0)

当我将应用程序的模块化路径指定为main.py时,我遇到了这个错误。

我通过在main.app旁边创建一个名为main.py的空文件并将app_function中的main.app设置为zappa_settings.json来修复它。

绝对不知道下面发生了什么,但这对我有用。

答案 6 :(得分:0)

我遇到了同样的错误,与上面的ScottieB一样,原因是我忘记为.app使用的一个软件包进行pip安装...在项目中本地完成pip安装后然后环境zappa update dev消失了!并完成更新。

答案 7 :(得分:0)

我也遇到了同样的错误,经过多次在线搜索并尝试了许多建议之后,实际上这只是代码缩进的一个小问题! Zappa配置或pip安装完全没有问题。

我注意到您的代码示例中根本没有缩进代码。我不知道这是它如何粘贴粘贴到StackOverflow中,还是这是您无意间尝试部署的方式。应该是

@ask.intent('HelloIntent')
def hello(firstname):
    speech_text = "Hello %s" % firstname
    return statement(speech_text).simple_card('Hello', speech_text)

@ask.intent('ByeIntent')
def bye():
    return statement("Ok, goodBye!")


if name == 'main':
    app.run()

答案 8 :(得分:0)

我遇到了同样的错误。 检查您是否已在Venv中安装了zappa。 我已经全局安装并在本地venv中运行。当我安装zappa时,它运行完美。

答案 9 :(得分:0)

我遇到了同样的问题,我发现zappa是全局安装在系统上的,而不是在我所使用的虚拟环境中的。

尝试在虚拟环境中安装zappa

pip install zappa

答案 10 :(得分:0)

我正在运行一个 Flask 应用程序,但忘记在我的应用程序中包含以下语句。

if __name__ == '__main__': app.run()

添加此行后,它开始正常工作。 ?