On Tue, Jun 2, 2015 at 2:23 PM, Shulgin, Oleksandr <
oleksandr.shulgin@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