On Tue, Jun 2, 2015 at 2:23 PM, Shulgin, Oleksandr < oleksandr.shul...@zalando.de> wrote: > > Hello, > > I've submitted a patch to psycopg2 to support streaming replication protocol (COPY_BOTH): https://github.com/psycopg/psycopg2/pull/322 > > It would be great if more people had a chance to take a look and provide feedback about it. In particular, please see example usage at this github comment[1]. Some bikeshedding is really needed here. :-)
I've been suggested that instead of putting the sync/stop methods into the replication message class like this class ReplicationMessage(str): > #wal_end > #data_start > #send_time > #def commit(self): > #def stop(self): > ... it would make more sense to put them into the cursor, like this: class ReplicationCursor(...): def sync_server(self, msg): ... def stop_replication(self): ... The client code will be able then to do this: class LogicalWriter(object): def __init__(self, cursor): self.cursor = cursor def write(self, msg): # receives instance of ReplicationMessage if should_stop_replication(): self.cursor.stop_replication() return self.actually_store_the_message(msg) if stored_reliably() and want_to_report_now(): self.cursor.sync_server(msg) # return value not examined by caller That seems like a more sane interface to me. -- Alex