Я пытаюсь развернуть проект python, использующий пакеты flask_restplus
и flask_injector
в AWS Lambda, используя проект Zappa , но он не работает, выдает ошибку при попытке вызватьAPI-шлюз, который Zappa автоматически создал для проекта:
[ERROR] AttributeError: тип объекта 'Callable' не имеет атрибута '_abc_registry' Traceback (последний вызов был последним):
File "/var / task / handler.py ", строка 602, в lambda_handler возвращает LambdaHandler.lambda_handler (событие, контекст)
Файл" /var/task/handler.py ", строка 245, в lambda_handler handler = cls ()
Файл "/var/task/handler.py", строка 139, в init self.app_module = importlib.import_module (self.settings.APP_MODULE) Файл "/var/lang/lib/python3.7/importlib/init.py ", строка 127, в import_module возвращает _bootstrap._gcd_import (имя [уровень:], пакет, уровень)
Файл" ", строка 1006, в _gcd_import
файл"", строка 983, в _find_and_load
File "", строка 967, в _find_and_load_unlocked
Файл "", строка 677, в _load_unlocked
Файл "", строка 728, в exec_module
Файл "", строка 219, в _call_with_frames_removed
Файл "/var/task/app.py", строка 1, из запуска импорта импорта Startup
Файл "/var/task/startup.py", строка 3, из импорта из flask_injector FlaskInjector
Файл "/var/task/flask_injector.py", строка 13, из вводаимпортировать Any, Callable, cast, Dict, get_type_hints, Iterable, List, TypeVar, Union
Файл "/var/task/typing.py", строка 1357, в классе Callable (extra = Collection_abc.Callable, metaclass = CallableMeta):
Файл "/var/task/typing.py", строка 1005, в new self._abc_registry = extra._abc_registry
Проект состоит из двух файлов Pythonтолько:
from startup import Startup
app = Startup.start_app()
from flask import Flask
from flask_restplus import Api
# if I removed the following line, the project works perfectly.
from flask_injector import FlaskInjector
class Startup():
@staticmethod
def start_app():
appObj = Flask(__name__)
appObj.secret_key = '123123'
app = appObj
print("It's working")
return app
И zappa_settings.json
file
{
"dev": {
"app_function": "app.app",
"aws_region": "[My Region]",
"profile_name": "default",
"project_name": "my-api-test",
"runtime": "python3.7",
"s3_bucket": "[An S3 bucket name]",
"keep_warm": false,
"memory_size": 1024,
"timeout_seconds": 90,
"manage_roles": false,
"role_name": "[A specific role name to deploy the project]",
"role_arn": "[Role ARN]"
}
}
Я не знаю, в чем здесь проблема, почему использование flask_injector
вызывает эту ошибку?