微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在 AWS Lambda 中运行我的 Flask 应用程序时出错

如何解决尝试在 AWS Lambda 中运行我的 Flask 应用程序时出错

我正在尝试使用 severless 将在本地运行良好的 Flask 应用程序部署到 AWS Lambda。部署很好,但我不能使用 aws lambda app 。我收到错误 502 Bad Gateway message: 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",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>",in _load_unlocked   File "<frozen importlib._bootstrap_external>",in exec_module   File "<frozen importlib._bootstrap>",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",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",in import_module

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

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

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

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

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

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

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

2021-03-12T01:49:29.040+01:00   File "/var/task/app.py",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",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+}'

有什么建议吗?

解决方法

您能否尝试在容器化的 lambda 环境中打包和安装您的模块。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?