我有以下圣杯应用程序:
# 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
,没有任何反应,只是坐在那里等待......
如果我先发布,哪个会正常工作,然后获取详细信息页面,这会产生相同的等待游戏。
我做错了什么?
答案 0 :(得分:0)
连接未正确关闭。尚未得到圣杯支持的before_request
和after_request
。所以我们需要在完成时关闭连接。
我建议使用ExecutionContext为每个exection创建单独的connecton。
@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)