【发布时间】:2019-08-14 20:33:54
【问题描述】:
我正在尝试使用 Flask 原子的 py2neo 事务,方法是使用 before_request 启动事务并使用 after_request 提交或回滚,具体取决于响应状态码。
这是我的代码:
from flask import Flask, request, app, g
from flask_restful import Resource, Api, abort
from werkzeug.wrappers import Request
from py2neo import Graph
import models
app = Flask(__name__)
api = Api(app)
def get_db():
return Graph(password="secret")
graph = get_db()
tx = None
@app.before_request
def before_request():
tx = graph.begin()
@app.after_request
def after_request(response):
if response.status_code >= 400:
tx.rollback()
else:
tx.commit() # Error line
问题是在before_request 上对模块变量tx 所做的修改似乎不会被after_request 注意到,所以我收到了这个错误:
AttributeError: 'NoneType' object has no attribute 'commit'
【问题讨论】: