コード例 #1
0
ファイル: middleware.py プロジェクト: terrasea/ming
 def __call__(self, environ, start_response):
     try:
         result = self.app(environ, start_response)
         if isinstance(result, list):
             self._cleanup_request()
             return result
         else:
             return self._cleanup_iterator(result)
     except self.flush_on_errors as exc:
         self._cleanup_request()
         raise
     except:
         ThreadLocalORMSession.close_all()
         ContextualORMSession.close_all(self._context_func())
         raise
コード例 #2
0
ファイル: model.py プロジェクト: joeywen/zarkov
'''The Zarkov data model.'''
import logging

from datetime import datetime

import gevent
import pymongo.errors

from ming import Session, collection, Field
from ming import schema as S
from ming.orm import ContextualORMSession, session

log = logging.getLogger(__name__)

doc_session = Session.by_name('zarkov')
orm_session = ContextualORMSession(
    lambda:id(gevent.getcurrent), doc_session)

# Singleton collection
idgen = collection(
    'idgen', doc_session,
    Field('_id', int, if_missing=0),
    Field('inc', int))

# Things we want to track -- the 'fact table' from an OLAP perspective
event = collection(
    'event', doc_session,
    Field('_id', int),
    Field('timestamp', datetime, if_missing=datetime.utcnow),
    Field('type', str),
    Field('context', {str:None}),
    Field('extra', None))
コード例 #3
0
ファイル: middleware.py プロジェクト: terrasea/ming
 def _cleanup_request(self):
     context = self._context_func()
     ThreadLocalORMSession.flush_all()
     ContextualORMSession.flush_all(context)
     ThreadLocalORMSession.close_all()
     ContextualORMSession.close_all(context)