示例#1
0
def main():
    print 'Replicator Started'
    io = Emitter(
        dict(host=settings.SOCKETIO_SETTINGS['host'],
             port=settings.SOCKETIO_SETTINGS['port'])).Of(
                 settings.SOCKETIO_SETTINGS['namespace'])
    stream = BinLogStreamReader(
        connection_settings=settings.MYSQL_SETTINGS,
        server_id=3,
        blocking=True,
        resume_stream=True,
        only_events=[UpdateRowsEvent],
        only_tables=[settings.DB_SETTINGS['source_table']])

    for binlogevent in stream:
        for row in binlogevent.rows:
            vals = row["after_values"]
            print 'Updated rows for ' + json.dumps(vals)
            io.Emit('update', json.dumps(vals))

    stream.close()
    def test_Emit(self):
        io = Emitter(self.opts)
        redis_cli = subprocess.Popen("redis-cli monitor",
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.PIPE,
                                     shell=True)

        output = ""
        while True:
            chunk = redis_cli.stdout.read(1)
            if chunk == '' and redis_cli.poll() != None:
                break
            if chunk == '\n':
                io.Emit('broadcast event', 'Hello from socket.io-emitter')
            if chunk != '' and 'PUBLISH' not in output:
                output += chunk
            else:
                redis_cli.kill()
                break

        self.assertTrue('PUBLISH' in output)
 def start(self):
     io = Emitter(dict(host='localhost', port=6379, key='sio-key'))
     io.Emit('broadcast event', 'Hello from socket.io-emitter')
     threading.Timer(self.interval, self.start).start()