On Tue, Jun 2, 2015 at 2:23 PM, Shulgin, Oleksandr <
[email protected]> 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