Использование 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 не хранит никаких данных.

Другие вопросы по тегам