| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* async_cluster: fix max_connections/ssl & improve args
- set proper connection_class if ssl = True
- pass max_connections/connection_class to ClusterNode
- recreate startup_nodes to properly initialize
- pass parser_class to Connection instead of changing it in on_connect
- only pass redis_connect_func if read_from_replicas = True
- add connection_error_retry_attempts parameter
- skip is_connected check in acquire_connection as it is already checked in send_packed_command
BREAKING:
- RedisCluster args except host & port are kw-only now
- RedisCluster will no longer accept unknown arguments
- RedisCluster will no longer accept url as an argument. Use RedisCluster.from_url
- RedisCluster.require_full_coverage defaults to True
- ClusterNode args except host, port, & server_type are kw-only now
* async_cluster: remove kw-only requirement from client
Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
|
| |
|
| |
|
|
|
|
| |
Co-authored-by: Chayim <chayim@users.noreply.github.com>
Co-authored-by: Anas <anas.el.amraoui@live.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* Support for loading, unloading and listing Redis Modules
* minor fixes for flake
* unit test for module list - only the empty use case
* ModuleError should inherit from ResponseError rather than RedisError
Co-authored-by: Vamsi Atluri <vamc19@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prior to ACL support, redis-py ignored the username component of
Connection URLs. With ACL support, usernames are no longer ignored and
are used to authenticate against an ACL rule. Some cloud vendors with
managed Redis instances (like Heroku) provide connection URLs with a
username component pre-ACL that is not intended to be used. Sending that
username to Redis servers < 6.0.0 results in an error. Attempt to detect
this condition and retry the AUTH command with only the password such
that authentication continues to work for these users.
Fixes #1274
|
|
|
| |
Better thread and fork safety for ConnectionPool and BlockingConnectionPool
|
| |
|
|
|
|
|
|
|
| |
AuthenticationError is now a subclass of ConnectionError, which means
the connection will be shut down and cleaned up.
Fixes #923
|
| |
|
|
|
|
|
|
|
|
| |
Using the locking routines, it is useful to be able to
distingush a generic lock error from a one that is related
to the lock not being owned anymore (without doing string
checks); this allows say a lock extension thread to attempt
to re-acquire the lock in this case (vs just dying).
|
|
|
|
| |
Remove workaround for handling unicode with older Pythons.
|
|
|
|
|
| |
* now uses unique string tokens to claim lock ownership
* added extend() method to extend the timeout on an already acquired lock
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Users now have the ability about how socket.timeout errors are handled.
Previously socket.timeout errors were handled just like any other socket error
in that the command would be retried once. This createed a potential race
condition when the client sends a command to a busy Redis server that can't
reply faster than the client's `socket_timeout` option. In this case, the server
will still eventually process the command.
There's now a `retry_on_timeout` option that's set to False by default.
If `retry_on_timeout` is False, any socket.timeout error will raise a
TimeoutError exception. If `retry_on_timeout` is set to True, the client
will retry executing the command once just like other socket.error exceptions.
TODO: Write better tests for this code.
TODO: Much of this logic could/should be moved to the ConnectionPool or
Connection objects.
Fixes #261
|
|
|
|
|
| |
Any attempt to reconnect will force all connections in that pool to update
their connections to the new master. Fixes #435
|
|
|
|
|
|
|
|
|
| |
ResponseErrors generated by commands executed in a pipeline now includes the
command position in the pipeline and the actual command sent to the Redis
server. For example:
Command # 3 (LPUSH c 3) of pipeline caused error: <actual error message from
Redis server>
|
| |
|
|
|
|
| |
errors.
|
|
|
|
|
|
| |
A simple patch to enable pep8 in tox and format our code properly.
Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
|
|\
| |
| |
| |
| |
| |
| | |
mattrobenolt-master
Conflicts:
redis/exceptions.py
|
| |
| |
| |
| |
| |
| |
| | |
This is important if you want to detect if there was an issue that resulted from the server being broken specifically, as opposed to the client issuing a bad command.
See: https://github.com/disqus/nydus/pull/31
Also, let me know if there are other exceptions that could extend the base `ServerError`. These are just the two that stood out.
|
| |
| |
| |
| | |
server change: https://groups.google.com/forum/?hl=en&fromgroups=#!topic/redis-db/VUiEFT8U8U0
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
|
|
|
| |
and pipelining.
|
|
|