Exemplo n.º 1
0
from __future__ import print_function, division

import time

import modules.remote as remote
import application.app as app

from zope.interface import implementer

from application import IllegalArgumentException, LogicException
from utils.singleton import singleton, cache
from .interfaces import *
from .handlers.handlerconfig import *

_logger = app.getLogger('base')


@implementer(IStatus)
class RedisStatus(object):
    _STATUS_KEY_PREFIX = '__mee_status_'

    def __init__(self, key, code='', config='', nextConfig='', tmpConfig=''):
        self.key = self._STATUS_KEY_PREFIX + key

        self.code = code
        self.config = config
        self.nextConfig = nextConfig
        self.tmpConfig = tmpConfig

        self.redisclient = remote.getRedisClient()
Exemplo n.º 2
0
from pymysqlreplication import BinLogStreamReader
from pymysqlreplication.row_event import (
    DeleteRowsEvent,
    UpdateRowsEvent,
    WriteRowsEvent,
)
from pymysqlreplication.event import (
    QueryEvent, )

from application import NotSupportedException
from application.config import config
from application.connection import ConnectinoPool
from utils.failure import Failure

_logger = app.getLogger('base')
_binlogLogger = app.getLogger('binlog')


class ListenService(object):
    """
    监听指定数据库的binlog,并将数据写入kafka队列
    """
    def __init__(self, database):
        self.topic = config().get('kafka', 'topic')
        self.database = database

        self._connPool = ConnectinoPool()
        self._runPath = app.getPrjRoot() + "/run"
        self._binlogPosFile = self._runPath + "/" + database + "_collector_position.safe"