Meepo Documentation

Welcome to meepo’s documentation. Meepo is a event sourcing and broadcasting platform for database.

This documentation consists of two parts:

  1. Meepo PubSub ( & meepo.sub). This part is enough if you only needs a simple solution for your database events.
  2. Meepo Apps (meepo.apps). This part ships with eventsourcing and replicator apps for advanced use. You can refer to examples for demo.

Meepo source code is hosted on Github:


Meepo can be used to do lots of things, including replication, eventsourcing, cache refresh/invalidate, real-time analytics etc. The limit is all the tasks should be row-based, since meepo only gives table_action -> pk style events.

  • Row-based database replication.

    Meepo can be used to replicate data between databases including postgres, sqlite, etc.

    Refer to examples/repl_db script for demo.

  • Replicate RDBMS to NoSQL and search engine.

    Meepo can also be used to replicate data changes from RDBMS to redis, elasticsearch etc.

    Refer to examples/repl_redis and examples/repl_elasticsearch for demo.

  • Event Sourcing.

    Meepo can log and replay what has happened since some time using a simple event sourcing.

    Refer to examples/event_sourcing for demo.


Meepo can only replicate row based data, which means it DO NOT replicate schema changes, or bulk operations.


Requirements:Python 2.x >= 2.7 or Python 3.x >= 3.2 or PyPy

To install the latest released version of Meepo:

$ pip install meepo


Meepo use blinker signal to hook into the events of mysql binlog and sqlalchemy, the hook is very easy to install.

Hook with MySQL’s binlog events:

from import mysql_pub

Hook with SQLAlchemy’s events:

from import sqlalchemy_pub

Then you can connect to the signal and do tasks based the signal:

sg = signal("test_write")

def print_test_write(pk)
    print("test_write -> %s" % pk)

Try out the demo scripts in example/tutorial for more about how meepo event works.

Pub Concept


SQLAlchemy Pub

Meepo Sub

Dummy Sub

0MQ Sub




Pub & Sub