Re: Streaming replication for psycopg2
От | Shulgin, Oleksandr |
---|---|
Тема | Re: Streaming replication for psycopg2 |
Дата | |
Msg-id | CACACo5Rb1A6rpjFJ9aOad2THF1RksbH6u8Bt7P6Dx_H3JK+OvA@mail.gmail.com обсуждение исходный текст |
Ответ на | Streaming replication for psycopg2 ("Shulgin, Oleksandr" <oleksandr.shulgin@zalando.de>) |
Ответы |
Re: Streaming replication for psycopg2
|
Список | psycopg |
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
>
> 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
В списке psycopg по дате отправления: