Использование GridFS с Ming ODM в Turbogears
Ming поддерживает GridFS начиная с версии 0.3, и я уже использовал его в нескольких приложениях Turbogears, но не могу найти никакой документации о том, как использовать GridFS с Ming,
Это то, что я сделал до сих пор, в моей модели store.py
модуль:
#import statements
BookFile = fs.filesystem('books',DBSession.impl,)
class Book(MappedClass):
"""
Book definition.
"""
class __mongometa__:
session = DBSession
name = 'books'
unique_indexes = [('title',),('author',),]
_id = FieldProperty(s.ObjectId)
title = FieldProperty(s.String)
author = FieldProperty(s.String)
isbn = FieldProperty(s.String)
vendor = FieldProperty(s.String)
_file = FieldProperty(s.ObjectId)
def _get_file(self):
return BookFile.m.find(dict(_id=self._file)).one()
def _set_file(self, name, data):
f = BookFile.m.put(name,data)
self._file = f
bookf = SynonymProperty(_get_file, _set_file)
Как видите, fs.filesystem
не могу взять ODMSession
(ThreadLocalODMSession
в этом случае), поэтому я должен перейти к основному ming.Session
класс, делая DBSession.impl
,
Что меня беспокоит, так это то, что Turbogears использует ThreadLocalODMSession для адаптации к многопоточному окружению, но то, что я делаю выше, - это предоставление GridFS Connection сеанса, не поддерживающего потоки.
все хорошо?
как я должен сделать это правильно / безопасно?
Любая помощь будет оценена, спасибо:)
1 ответ
DBSession.impl
должно быть хорошо, так как ming.Session
не хранит никаких данных.