# -*- coding: utf-8 -*- import time import redis from arara import arara_manager from util import log_method_call_with_source from etc import arara_settings from arara_thrift.ttypes import Notification log_method_call = log_method_call_with_source("noti_manager") NOTI_EXPIRE_TIME = 2592000 # 30 days TODO: subscribe now does not expire TYPE_FROM_REPLY = 0 TYPE_FROM_SUBSCRIBE = 1 class NotiManager(arara_manager.ARAraManager): ''' 댓글 알림/구독 알림을 책임진다 ''' def __init__(self, engine): super(NotiManager, self).__init__(engine) # noti DB # DB No: 2 # Key: user_id # Value: Ordered set of notification (score: timestamp, value: "type#reply_id#root_id") self.noti = redis.StrictRedis(host='127.0.0.1', port=arara_settings.REDIS_PORT, db=2) # noti-read-status DB # DB No: 3
from sqlalchemy.exc import InvalidRequestError from sqlalchemy.orm.exc import ConcurrentModificationError, NoResultFound, StaleDataError from libs import smart_unicode from arara_thrift.ttypes import * from arara import arara_manager from arara import model from util import log_method_call_with_source, log_method_call_with_source_duration from etc import arara_settings from etc.arara_settings import SESSION_EXPIRE_TIME log_method_call = log_method_call_with_source('login_manager') log_method_call_duration = log_method_call_with_source_duration('login_manager') class DictSessionStore(UserDict.UserDict): ''' 현재 Login되어 있는 사용자들의 Session을 dictionary로 저장한다. 사용시 LoginManager는 Backend 서버에 단일 객체만 존재해야 한다. ''' pass class DatabaseSessionStore(collections.MutableMapping): ''' 현재 Login되어 있는 사용자들의 Session을 DB에 저장한다. '''
# -*- coding: utf-8 -*- import time import redis from arara import arara_manager from util import log_method_call_with_source from etc import arara_settings from arara_thrift.ttypes import Notification log_method_call = log_method_call_with_source("noti_manager") NOTI_EXPIRE_TIME = 2592000 # 30 days TODO: subscribe now does not expire TYPE_FROM_REPLY = 0 TYPE_FROM_SUBSCRIBE = 1 class NotiManager(arara_manager.ARAraManager): ''' 댓글 알림/구독 알림을 책임진다 ''' def __init__(self, engine): super(NotiManager, self).__init__(engine) # noti DB # DB No: 2 # Key: user_id # Value: Ordered set of notification (score: timestamp, value: "type#reply_id#root_id") self.noti = redis.StrictRedis(host='127.0.0.1', port=arara_settings.REDIS_PORT, db=2) # noti-read-status DB # DB No: 3 # Key: user_id # Value: timestamp repr that when user read last notification self.noti_read = redis.StrictRedis(host='127.0.0.1', port=arara_settings.REDIS_PORT, db=3)