Развернутый зависимый проект flask_injector в Lambda не работает - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь развернуть проект 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только:

  • app.py:
from startup import Startup

app = Startup.start_app()
  • startup.py:
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 вызывает эту ошибку?

1 Ответ

0 голосов
/ 23 октября 2019

После более подробного изучения проблемы и прочтения ответа от Amazon:
https://forums.developer.amazon.com/questions/191460/ask-sdk-for-python-14-possible-issue-when-deployed.html

Я выяснил, что одна из моих зависимостей устанавливает пакет typing (который можно найти как стандартныйпакет python), и, удалив его, проблема решена.

Так что просто сделайте:

pip uninstall typing

и вам будет хорошо идти.

...