【问题标题】:I get errors when trying to run my flask app in AWS Lambda尝试在 AWS Lambda 中运行烧瓶应用程序时出现错误
【发布时间】:2021-06-10 01:14:43
【问题描述】:

我正在尝试使用 severless 将一个在本地运行良好的烧瓶应用程序部署到 AWS Lambda。部署很好,但我不能使用 aws lambda app 。我收到一个错误502 Bad Gatewaymessage: Internal server error

我检查了日志,发现了什么:

2021-03-12T01:49:27.685+01:00   Traceback (most recent call last):

2021-03-12T01:49:27.685+01:00   File "/var/task/wsgi_handler.py", line 44, in import_app

2021-03-12T01:49:27.685+01:00   wsgi_module = importlib.import_module(wsgi_fqn_parts[-1])

2021-03-12T01:49:27.685+01:00   File "/var/lang/lib/python3.8/importlib/__init__.py", line 127, in import_module

2021-03-12T01:49:27.685+01:00   return _bootstrap._gcd_import(name[level:], package, level)

2021-03-12T01:49:27.685+01:00   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import

2021-03-12T01:49:27.685+01:00   File "<frozen importlib._bootstrap>", line 991, in _find_and_load

2021-03-12T01:49:27.685+01:00   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked

2021-03-12T01:49:27.685+01:00   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked

2021-03-12T01:49:27.685+01:00   File "<frozen importlib._bootstrap_external>", line 783, in exec_module

2021-03-12T01:49:27.685+01:00   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

2021-03-12T01:49:27.685+01:00   File "/var/task/app.py", line 10, in <module>

2021-03-12T01:49:27.685+01:00   from common.helpers import *

2021-03-12T01:49:27.685+01:00   File "/var/task/common/helpers.py", line 1, in <module>

2021-03-12T01:49:27.685+01:00   from common.db import db

2021-03-12T01:49:27.685+01:00   File "/var/task/common/db.py", line 1, in <module>

2021-03-12T01:49:27.685+01:00   from flask_pymongo import pymongo

2021-03-12T01:49:27.685+01:00   ModuleNotFoundError: No module named 'flask_pymongo'

2021-03-12T01:49:27.686+01:00   [ERROR] Exception: Unable to import app.app Traceback (most recent call last):   File "/var/lang/lib/python3.8/imp.py", line 234, in load_module     return load_source(name, filename, file)   File "/var/lang/lib/python3.8/imp.py", line 171, in load_source     module = _load(spec)   File "<frozen importlib._bootstrap>", line 702, in _load   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked   File "<frozen importlib._bootstrap_external>", line 783, in exec_module   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed   File "/var/task/wsgi_handler.py", line 119, in <module>     wsgi_app = import_app(config)   File "/var/task/wsgi_handler.py", line 49, in import_app     raise Exception("Unable to import {}".format(config["app"]))

2021-03-12T01:49:27.803+01:00   START RequestId: cd231555-23cb-4444-b6fe-36e2ce590dc7 Version: $LATEST

2021-03-12T01:49:29.040+01:00   Traceback (most recent call last):

2021-03-12T01:49:29.040+01:00   File "/var/task/wsgi_handler.py", line 44, in import_app

2021-03-12T01:49:29.040+01:00   wsgi_module = importlib.import_module(wsgi_fqn_parts[-1])

2021-03-12T01:49:29.040+01:00   File "/var/lang/lib/python3.8/importlib/__init__.py", line 127, in import_module

2021-03-12T01:49:29.040+01:00   return _bootstrap._gcd_import(name[level:], package, level)

2021-03-12T01:49:29.040+01:00   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import

2021-03-12T01:49:29.040+01:00   File "<frozen importlib._bootstrap>", line 991, in _find_and_load

2021-03-12T01:49:29.040+01:00   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked

2021-03-12T01:49:29.040+01:00   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked

2021-03-12T01:49:29.040+01:00   File "<frozen importlib._bootstrap_external>", line 783, in exec_module

2021-03-12T01:49:29.040+01:00   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

2021-03-12T01:49:29.040+01:00   File "/var/task/app.py", line 10, in <module>

2021-03-12T01:49:29.040+01:00   from common.helpers import *

2021-03-12T01:49:29.040+01:00   File "/var/task/common/helpers.py", line 1, in <module>

2021-03-12T01:49:29.040+01:00   from common.db import db

我不明白 ModuleNotFoundError: No module named 'flask_pymongo' 当我在本地使用该应用程序时,我没有这个。无论如何我都尝试安装它,但它仍然无法正常工作。

我的serverless 配置:

service: serverless-flask
plugins:
  - serverless-python-requirements
  - serverless-wsgi
custom:
  wsgi:
    # This is the file name and the app name of the application 
    # Where file name is app.py and Flask app name is app
    # ie. app = Flask(__name__) 
    app: app.app
    packRequirements: false
  pythonRequirements:
    dockerizePip: non-linux
provider:
  name: aws
  runtime: python3.8
  stage: dev
  region: us-east-1
functions:
  app:
    handler: wsgi.handler
    events:
      - http: ANY /
      - http: 'ANY {proxy+}'

有什么建议吗?

【问题讨论】:

    标签: python aws-lambda serverless-framework


    【解决方案1】:

    您可以尝试在容器化的 lambda 环境中打包和安装您的模块吗?

    因为有时打包在 windows 中的模块无法在其他操作系统上运行。

    我在使用 psycopg2 时遇到了类似的问题,然后在 lambci docker 中安装并打包,一切正常。

    【讨论】:

    • 我在 Mac OS 上,所以我不确定这个解决方案在我的情况下是否有用。我错了吗?
    • 如果您在源包中有模块,但仍然收到模块未找到错误,则可能是上述问题。它并不特定于 Windows,实际上它是 lambda env 与其他人的对比
    • 它不起作用。我正在使用serverless framework(顺便说一下,不是 zappa)。很好奇。 pymongo 导入位于与我的 app.py 分开的文件中,位于名为 db.py 的文件中。也许这就是它不起作用的原因。
    • 如果可能的话,您可以在帖子中添加该代码sn-p
    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 2021-12-22
    • 2020-04-16
    • 2018-05-30
    • 1970-01-01
    • 2020-09-14
    • 2019-08-14
    • 2019-01-25
    相关资源
    最近更新 更多