多个 Tornado 实例之间的 SQLAlchemy 查询不一致

goo*_*nsu 4 python sqlalchemy tornado

我开始 2 个龙卷风实例,例如。tornado-8000 和 tornado-8001,使用上游 nginx。

当我在一个实例上插入数据时,在另一个实例上的查询找不到此数据。

SQLAlchemy 查询如下:

topics = self.db.query(Topic).order_by(Topic.updated_at.desc()).limit(20)
Run Code Online (Sandbox Code Playgroud)

我的 SQLAlchemy 初始化如下:

class Application(tornado.web.Application):
    def __init__(self):
        # setup app
        from urls import handlers,ui_modules
        settings = dict(
            debug = options.debug,
            static_path = os.path.join(root_dir, "static"),
            xsrf_cookies = True,
            cookie_secret = "nzjxcjasduuqwheazmu293nsadhaslzkci9023nsadnua9sdads/Vo=",
            ui_modules = ui_modules,
        )
        tornado.web.Application.__init__(self, handlers, **settings)

        self.db = scoped_session(sessionmaker(bind=engine,autocommit=False,autoflush=False))
Run Code Online (Sandbox Code Playgroud)

基处理程序:

class BaseHandler(web.RequestHandler):
    @property
    def db(self):
        return self.application.db
Run Code Online (Sandbox Code Playgroud)

我的插入:

topic = Topic()
topic.title = u'abcdefg'
self.db.add(topic)
self.db.commit()
Run Code Online (Sandbox Code Playgroud)

错误在哪里?

goo*_*nsu 5

感谢@van。解决了。我覆盖了 tornado.web.RequestHandler 的 on_finish 方法并添加了 session.remove()。