Example #1
0
# -*- 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
Example #2
0
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)