2007-08-17

[メモ]TurboGears + SQLAlchemyはthread safeなんだろうか?

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だからか?)