1

我有以下圣杯应用程序:

# encoding: utf-8
from chalice import Chalice
from models import ContentItem

app = Chalice(app_name='moderations')
app.debug = True


@app.route("/item/{item_id}", methods=['GET'])
def view_item(item_id):
    instance = ContentItem.get(ContentItem.id == item_id)
    return model_to_dict(instance)

@app.route("/item/{item_id}", methods=['POST'])
def save_item(item_id):
    request = app.current_request
    data = request.json_body
    instance = ContentItem.get(ContentItem.id == item_id)
    instance.content = data
    instance.save()
    return


def model_to_dict(instance):
    data = {'content': instance.content, 'id': instance.id}
    return data

我正在跑步chalice local

什么时候去 GET http://localhost:8000/item/1234,我得到了很好的记录但是如果我去 POST http://localhost:8000/item/1234,什么都没有发生,只是坐在那里等待......

如果我先发帖,这会很好,然后获取详细信息页面,这会导致相同的等待游戏。

我做错了什么?

4

1 回答 1

0

连接未正确关闭。before_request并且after_request还没有得到 chalice 的支持。所以我们需要在连接完成时关闭它。

我建议使用ExecutionContext为每个执行创建单独的连接。

@app.route("/item/{item_id}", methods=['GET'])
def view_item(item_id):

    with db.execution_context():
        # This statement is executed using the new `ctx_conn`.
        instance = ContentItem.get(ContentItem.id == item_id)
    return model_to_dict(instance)
于 2017-12-14T10:59:07.213 回答