AWS Chalice: маршруты в нескольких файлах Python - PullRequest
0 голосов
/ 25 июня 2018

Я запускаю AWS Lambda и влюбился в Чашу.Из того, что я понимаю, он имеет ту же идею Flask, но использует все запросы "без сервера".Я хотел бы собрать сложную структуру с несколькими файлами лямбда-скриптов.Я не нахожу такого примера.

В заметке об обновлении здесь говорится, что из версии 0.4 было добавлено то, что, похоже, именно то, что я ищу.И в этом примере показано, как извлечь данные из файлов в папке "chalicelib".

Следуя этой логике, можно создать несколько папок внутри "chalicelib", как будто каждая папка представленамодуль моего приложения и внутри папок каждый файл будет маршрутом с натяжкой исходного кода?


Интересно, является ли это жизнеспособным решением:

app/
├── requirements.txt
├── app.py
└── chalicelib
    ├── __init__.py
    ├── users
    │   ├── __init__.py
    │   ├── route.py
    │   └── controller.py
    └── teams
        ├── __init__.py
        ├── parameters.py
        └── controller.py

app.py:

import chalicelib

chalicelib> __init__.py:

from . import users, teams

chalicelib> пользователи> __init__.py:

from . import route

chalicelib> пользователи> route.py:

from app import app
from . import controller

@app.route("/users/test")
def test():
    return controller.test()

1 Ответ

0 голосов
/ 26 июня 2018

Вам нужно импортировать переменные в каждый файл инициализации, пока не дойдете до нужного файла.Например:

app/
|__ app.py
|__ config.py
|__ app
   |__ mod_cad
      |__ controllers.py
      |__ models.py
   |__ mod_home
      |__ controllers.py
   |__ static
      |__ ...
   |__ templates
      |__ ...
   |__ __init__.py

Тогда:

__init__.py:

def index():
    return render_template("home.html")

@app.errorhandler(404)
def not_found(error):
    return render_template('404.html'), 404

from app.mod_cad.controllers import mod_cad as cad_module
from app.mod_home.controllers import mod_home as home_module

app.register_blueprint(cad_module)
app.register_blueprint(home_module)

db.create_all()

И:

app.py:

# Run a test server.
from app import app
app.run(host='localhost', port=8080, debug=True)
...