Ошибка при развертывании приложения Tornado в AWS Lambda - PullRequest
2 голосов
/ 07 мая 2019

Я пытаюсь с помощью простого «Hello World» развернуть приложение Python-Tornado на AWS Lambda с помощью Zappa.

Код для того же самого в app.py файле:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])
app = make_app()
app.listen(8891)
if __name__ == "__main__":

    tornado.ioloop.IOLoop.current().start()

Ошибка, которую я получаю после запуска zappa deploy dev, равна

Error: Warning! Status check on the deployed lambda failed. A GET request to '/' yielded a 500 response code.

Ошибка, отображаемая при запуске zappa tail, равна

__call__() takes 2 positional arguments but 3 were given

Файл zappa_settings.json :

{
    "dev": {
        "app_function": "app.app",
        "aws_region": "ap-south-1",
        "profile_name": "default",
        "project_name": "dmi-amort",
        "runtime": "python3.6",
        "s3_bucket": "zappa-mekp987ue",
        "manage_roles": false,
        "role_name": "lambda-role",
    }
}

Как устранить эту проблему

1 Ответ

1 голос
/ 07 мая 2019

Заппа основана на WSGI;Торнадо нет.Они несовместимы, поэтому вам придется заменить один из них на альтернативный.(Я не знаю простого способа объединить Tornado с Lambda, поэтому я бы предложил использовать Zappa с Flask)

В более старых версиях Tornado вы могли использовать WGSIApplication для частичной поддержки Tornado вСреда WSGI, но она больше недоступна в Tornado 6.0.

...