2
2つのトルネードインスタンスを開始します。 nornx upstreamを使用して、竜巻-8000および竜巻-8001。複数のトルネードインスタンス間でSqlalchemyクエリの一貫性がない
1つのインスタンスにデータを挿入すると、別のインスタンスのクエリでこのデータを見つけることができません。
topics = self.db.query(Topic).order_by(Topic.updated_at.desc()).limit(20)
そして、私のSQLAlchemyのは、次のようinitedされています:
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))
たBaseHandler:
class BaseHandler(web.RequestHandler):
@property
def db(self):
return self.application.db
をマイ挿入:
topic = Topic()
topic.title = u'abcdefg'
self.db.add(topic)
self.db.commit()
どこがエラーですか?
'Topic'を問い合わせる前に、他のインスタンスを' commit() 'または' rollback()しようとしてください。これがうまくいけば、コミットされたオブジェクトの '不可視化 'を引き起こすのはトランザクションの分離です。 – van
@vanありがとう、それは私のせいです。私はtornado.web.RequestHandlerのon_finishメソッドをオーバーライドし、その中にsession.remove()を行う必要があります。セッションは削除されないので、セッションは分離されます。あなたの助言に感謝します。 – goofansu
素晴らしいあなたの解答に答えを加え、それを受け入れてください。 – van