首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AWS Chalice:多个python文件中的路由

AWS Chalice:多个python文件中的路由
EN

Stack Overflow用户
提问于 2018-06-26 03:59:16
回答 3查看 1.4K关注 0票数 0

我正在创建AWS Lambda,我爱上了Chalice。据我所知,它与Flask有相同的概念,但使用所有请求都是“无服务器的”。我想把几个lambda脚本文件放在一个复杂的结构中。我找不到这样的例子。

In an update note here,它说从0.4版本开始添加的东西似乎正是我想要的。在这个例子中,它展示了如何拉取data from files inside的"chalicelib“文件夹。

按照这个逻辑,可以在"chalicelib“中创建几个文件夹,就好像每个文件夹代表了我的应用程序的一个模块,而在这些文件夹中,每个文件都是一条包含大量源代码的路径?

我想知道这是不是一个可行的解决方案:

代码语言:javascript
复制
app/
├── requirements.txt
├── app.py
└── chalicelib
    ├── __init__.py
    ├── users
    │   ├── __init__.py
    │   ├── route.py
    │   └── controller.py
    └── teams
        ├── __init__.py
        ├── parameters.py
        └── controller.py

app.py:

代码语言:javascript
复制
import chalicelib

chalicelib > __init__.py:

代码语言:javascript
复制
from . import users, teams

chalicelib >用户> __init__.py:

代码语言:javascript
复制
from . import route

chalicelib >用户> route.py:

代码语言:javascript
复制
from app import app
from . import controller

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

回答 3

Stack Overflow用户

发布于 2019-11-21 14:08:54

Chalice有一个叫做blueprints的功能。Chalice blueprints在概念上类似于Flask中的蓝图。蓝图用于将应用程序组织到逻辑组件中。使用蓝图,您可以在app.py外部的模块中定义资源和装饰器。然后在主app.py文件中注册一个蓝图。Blueprints支持应用程序对象上可用的任何装饰器。使用蓝图,您可以在多个文件中定义路线。

票数 2
EN

Stack Overflow用户

发布于 2020-01-29 04:56:07

从Chalice 1.12.0开始,您需要在app.py中调用imports,如下所示:

代码语言:javascript
复制
from chalice import Chalice
from chalicelib.users.controller import createUser

app = Chalice(app_name='MyApp')

@app.route('/users', content_types=['application/json'], methods=['POST'], api_key_required=True, cors=True)
def userPost():
    data = app.current_request.json_body
    response = createUser(data)
    return response

在chalicelib/users/Controler.py中的另一个文件中:

代码语言:javascript
复制
def createUser(userData):
    ...{logic here}...
    return response
票数 0
EN

Stack Overflow用户

发布于 2018-06-26 09:03:01

您需要将变量导入到每个init文件中,直到到达所需的文件。例如:

代码语言:javascript
复制
app/
|__ app.py
|__ config.py
|__ app
   |__ mod_cad
      |__ controllers.py
      |__ models.py
   |__ mod_home
      |__ controllers.py
   |__ static
      |__ ...
   |__ templates
      |__ ...
   |__ __init__.py

然后:

代码语言:javascript
复制
__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()

和:

代码语言:javascript
复制
app.py:

# Run a test server.
from app import app
app.run(host='localhost', port=8080, debug=True)
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51031020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档