Commit Graph

50 Commits

Author SHA1 Message Date
Christophe Jolif
1afbaf495e use new URL for psycogreen 2020-05-28 14:11:34 +02:00
Alexander Kukushkin
6cff5a3e08 Smart replication feedback
This commit makes psycopg2 responsible for sending the status update
(feedback) messages to the server regardless of whether a synchronous or
asynchronous connection is used.

Feedback is sent every *status_update* (default value is 10) seconds,
which could be configured by passing a corresponding parameter to the
`start_replication()` or `start_replication_expert()` methods.
The actual feedback message is sent by the
`pq_read_replication_message()` when the *status_update* timeout is
reached.

The default behavior of the `send_feedback()` method is changed.
It doesn't send a feedback message on every call anymore but just
updates internal structures. There is still a way to *force* sending
a message if *force* or *reply* parameters are set.

The new approach has certain advantages:
1. The client can simply call the `send_feedback()` for every
   processed message and the library will take care of not overwhelming
   the server. Actually, in the synchronous mode it is even mandatory
   to confirm every processed message.
2. The library tracks internally the pointer of the last received
   message which is not keepalive. If the client confirmed the last
   message and after that server sends only keepalives with increasing
   *wal_end*, the library can safely move forward *flush* position to
   the *wal_end* and later automatically report it to the server.

Reporting of the *wal_end* received from keepalive messages is very
important. Not doing so casing:
1. Excessive disk usage, because the replication slot prevents from
   WAL being cleaned up.
2. The smart and fast shutdown of the server could last indefinitely
   because walsender waits until the client report *flush* position
   equal to the *wal_end*.

This implementation is only extending the existing API and therefore
should not break any of the existing code.
2019-05-06 10:27:44 +02:00
Jon Dufresne
03bb44dd2c Convert while 1: statements to while True:
A slightly more readable and modern syntax.
2019-03-13 11:13:05 +00:00
Daniele Varrazzo
0eb4560771 Don't use versions such as 2.8.0 in docs
Use 2.8.
2019-02-17 01:51:06 +00:00
Jon Dufresne
b07e34e0b8 Prefer https:// URLs when available 2018-09-22 19:02:33 -07:00
Jon Dufresne
9ceffa1cc6 Update all pypi.python.org URLs to pypi.org
For details on the new PyPI, see the blog post:

https://pythoninsider.blogspot.ca/2018/04/new-pypi-launched-legacy-pypi-shutting.html
2018-05-20 17:22:37 +01:00
Jon Dufresne
e335d6d223 Trim trailing whitespace from all files throughout project
Many editors automatically trim whitespace on save. By trimming all
 files in one go, makes future diffs cleaner without extraneous
 whitespace changes.
2017-12-01 21:42:14 -08:00
Daniele Varrazzo
9614e7241b Further docs cleanup
Recent Sphinx versions seem overly aggressive in autodetecting python,
or I just didn't notice the errors, so be explicit in what language to
use with code examples.
2017-11-06 18:34:23 +00:00
Daniele Varrazzo
e0883f1967 Name the db in the replication test like the unit test one 2016-08-14 19:57:29 +01:00
Daniele Varrazzo
86434548a7 Replication docs massaging, mostly formatting 2016-08-07 02:23:02 +01:00
Daniele Varrazzo
9a4f8f915f Reshuffling and indexing of replication docs 2016-08-07 02:07:16 +01:00
Gabriel Linder
88d3d7fc7e Typo. 2016-03-09 21:51:02 +01:00
Karl O. Pinc
3a54e83737 Improve sentence. 2016-02-02 12:48:16 -06:00
btubbs
06b4b1de94 Notify example should pop the oldest message in conn.notifies, not the newest. 2015-06-02 17:07:10 +01:00
Daniele Varrazzo
1f330e9cac Allow connection.notices and notifies to be replaced.
Close #326
2015-06-02 17:02:04 +01:00
Asmund Tokheim
ab4afd0e2f Correction to type adaption example, making it more transparent 2014-11-02 14:15:51 +01:00
Daniele Varrazzo
9e15f54fe8 Added cursor_factory connection attribute and connect() parameter 2013-04-07 02:30:12 +01:00
Brian Sutherland
2371166383 grammar 2012-07-27 12:48:28 +03:00
Marti Raudsepp
b97599166e Update all links to PostgreSQL docs to the current version.
I also checked all links and anchors to make sure they're still valid.
2012-02-28 18:28:07 +02:00
Daniele Varrazzo
3e39b23835 Notice -> Note in the docs, and a handful of other typo fixed 2011-10-14 23:59:49 +01:00
Daniele Varrazzo
e3054ac9f3 Added new_array_type() function
Allows the creation of a generic array typecaster from Python.
2011-09-22 15:51:21 +01:00
Daniele Varrazzo
6c8051907c Fixed doc blocks
Raise error with docutils 0.8.1. Probably docutils 0.7 was more lenient.
2011-09-22 15:50:50 +01:00
Daniele Varrazzo
30a046c602 Fixed adaptation doc example
Close ticket #63
2011-07-24 20:42:23 +01:00
Daniele Varrazzo
d2b28abced Method set_transaction() renamed to set_session()
In fact it doesn't change "the transaction", as there has to be no
transaction when invoked. The effect instead is to execute SET SESSION
CHARACTERISTICS.
2011-06-08 14:22:11 +01:00
Daniele Varrazzo
8f876d4b5d Avoid a deadlock using concurrent green threads on the same connection
Use the async_cursor property to store an indication that something is
running (even if it is not necessarily a cursor running the query).
2011-06-05 16:22:54 +01:00
Daniele Varrazzo
a69facc7f0 Adding docs for the planned set_transaction/autocommit features 2011-05-31 00:05:50 +01:00
Daniele Varrazzo
556b4d461e Documentation cleanup
Added several links to the Python documentation using the 'intersphinx'
extension.
2011-02-19 16:16:28 +00:00
Daniele Varrazzo
9c81f6c186 Improved adaptation documentation
Documented __conform__() and prepare().
2011-02-10 02:16:24 +00:00
Daniele Varrazzo
9c71a9c6e5 Added link to psycogreen. 2010-12-02 17:13:13 +00:00
Daniele Varrazzo
bde523695a Fixed index entries of green-related terms. 2010-12-02 15:15:31 +00:00
Daniele Varrazzo
2f582da1f0 Notifcation example improved. 2010-11-08 01:28:00 +00:00
Daniele Varrazzo
5b65e75122 Docs expansions about thread/processes safety. 2010-11-05 23:58:10 +00:00
Daniele Varrazzo
04b4649d03 Updated version 2.2.3 -> 2.3 in the docs. 2010-11-05 12:38:49 +00:00
Daniele Varrazzo
1a0fca09d9 Added documentation for the Notify object. 2010-11-05 09:34:47 +00:00
Daniele Varrazzo
850cd97ab3 A few doc fixes. 2010-10-08 10:16:59 +01:00
Daniele Varrazzo
19ae49e79e Refer to PostgreSQL 9.0 documentation. 2010-09-23 23:14:39 +01:00
Daniele Varrazzo
80ebb14df4 Use stable anchors to reference PostgreSQL docs. 2010-09-23 23:13:59 +01:00
Daniele Varrazzo
2020790ba1 Typo fixed. 2010-05-15 14:27:02 +01:00
Daniele Varrazzo
e29424a230 Dropped large object support when psycopg is in green mode.
Async mode and large object are not compatible, albeit I haven't found
an authoritative source yet.
2010-05-09 20:34:02 +01:00
Daniele Varrazzo
d2d1160260 Documentation about coroutines support reviewed. 2010-04-23 13:20:56 +01:00
Daniele Varrazzo
8fed0aa57d Forbid COPY-related methods in green mode.
With the current implementation, at best they would silently block. They
actually hang everything.

Implementation posponed after some refactoring of the polling system,
because it will be probably possible to provide an implementation for
'poll()' during COPY which is good for both async and green modes.
2010-04-21 15:21:33 +01:00
Daniele Varrazzo
a54932ee9c Added documentation for the green features. 2010-04-21 15:21:32 +01:00
Daniele Varrazzo
02a28ff028 Notifications are automatically read after each query.
Added tests for basic notifications process.
2010-04-21 15:09:14 +01:00
Daniele Varrazzo
d8f4ed1a04 Fixed documentation and example for asynchronous notifications. 2010-04-21 15:09:13 +01:00
Daniele Varrazzo
6fecc36b7f Connection method 'executing()' renamed to 'isexecuting()'. 2010-04-21 15:09:13 +01:00
Daniele Varrazzo
ac6938a26a Fixed async documentation after cursor.poll() dropped. 2010-04-21 15:09:13 +01:00
Daniele Varrazzo
6aaa50703e Added documentation for the new asynchronous support. 2010-04-08 13:25:17 +01:00
Daniele Varrazzo
99620c1454 A bunch of typo fixed in the docs 2010-03-03 18:43:24 +01:00
Daniele Varrazzo
97ced0d4f1 Use the default role for cross referencing Python objects. 2010-02-26 00:49:19 +00:00
Daniele Varrazzo
b744c92f58 Documentation dir reordered. 2010-02-14 16:45:36 +00:00