SQLAlchemyのSessionはthread safeではない。
thread safeにするには、SessionContextを使いなさいとのこと。
だが、Turbogearsのソース中にSessionContextを使っている箇所がないのはどういうことでしょう。。。。
この件調査中。
追記---
使っているのをturbogears/database.pyに発見。
from sqlalchemy.ext import activemapper, sessioncontext
....
session = activemapper.Objectstore(create_session)
Objectstoreはsqlalchemy/ext/activemapper.pyで以下の定義。
class Objectstore(object):
def __init__(self, *args, **kwargs):
self.context = SessionContext(*args, **kwargs)
def __getattr__(self, name):
return getattr(self.context.current, name)
session = property(lambda s:s.context.current)
たしかにこれならthread safe。安心した。
追記---
この記事投稿後15分でGoogleのインデックスに入っている。Google恐るべし。(Bloggerだからか?)