summaryrefslogtreecommitdiff
path: root/redis/asyncio
Commit message (Collapse)AuthorAgeFilesLines
* Kristjan/issue #2754: Add missing argument to ↵Kristján Valur Jónsson2023-05-101-0/+3
| | | | | | | | | | | | SentinelManagedConnection.read_response() (#2756) * Increase timeout for a test which would hang completely if failing. Timeouts in virtualized CI backends can occasionally fail if too short. * add "disconnect_on_error" argument to SentinelManagedConnection * update Changes * lint
* fix create single_connection_client from url (#2752)dvora-h2023-05-081-1/+5
|
* Optionally disable disconnects in read_response (#2695)Kristján Valur Jónsson2023-05-083-100/+54
| | | | | | | | | | | | | * Add regression tests and fixes for issue #1128 * Fix tests for resumable read_response to use "disconnect_on_error" * undo prevision fix attempts in async client and cluster * re-enable cluster test * Suggestions from code review * Add CHANGES
* clean warnings (#2731)dvora-h2023-05-081-1/+1
|
* add "address_remap" feature to RedisCluster (#2726)Kristján Valur Jónsson2023-05-021-1/+30
| | | | | | | | | | | | | | | * add cluster "host_port_remap" feature for asyncio.RedisCluster * Add a unittest for asyncio.RedisCluster * Add host_port_remap to _sync_ RedisCluster * add synchronous tests * rename arg to `address_remap` and take and return an address tuple. * Add class documentation * Add CHANGES
* Improve error output for master discovery (#2720)Marc Schöchlin2023-04-271-2/+8
| | | | | | | Make MasterNotFoundError exception more precise in the case of ConnectionError and TimeoutError to help the user to identify configuration errors Co-authored-by: Marc Schöchlin <marc.schoechlin@flipapp.de>
* Fix incorrect usage of once flag in async Sentinel (#2718)Felipe Machado2023-04-271-2/+2
| | | | | | | In the execute_command of the async Sentinel, the once flag was being used incorrectly, with its meaning inverted. To fix we just needed to invert the if and else bodies. This isn't being caught by the tests currently because the tests of commands that use this flag do not check their results/effects (for example the "test_ckquorum" test).
* asyncio: Fix memory leak caused by hiredis (#2693) (#2694)Oran Avraham2023-04-131-3/+4
|
* Fix async (#2673)dvora-h2023-03-291-7/+3
|
* Fixing cancelled async futures (#2666)Chayim2023-03-292-37/+83
| | | | | Co-authored-by: James R T <jamestiotio@gmail.com> Co-authored-by: dvora-h <dvora.heller@redis.com>
* Fix issue 2660: PytestUnraisableExceptionWarning from asycio client (#2669)shacharPash2023-03-281-0/+5
|
* fix: do not use asyncio's timeout lib before 3.11.2 (#2659)Thiago Bellini Ribeiro2023-03-281-1/+3
| | | | | | | | | | | | There's an issue in asyncio's timeout lib before 3.11.3 that causes async calls to raise `CancelledError`. This is a cpython issue that was fixed in this commit [1] and cherry-picked to previous versions, meaning 3.11.3 will work correctly. Check [2] for more info. [1] https://github.com/python/cpython/commit/04adf2df395ded81922c71360a5d66b597471e49 [2] https://github.com/redis/redis-py/issues/2633
* AsyncIO Race Condition Fix (#2641)v4.5.3Chayim2023-03-222-5/+19
|
* Fix behaviour of async PythonParser to match RedisParser as for issue #2349 ↵Kristján Valur Jónsson2023-03-161-13/+11
| | | | | | | (#2582) * Allow data to drain from PythonParser after connection close. * Add Changes
* fix: replace async_timeout by asyncio.timeout (#2602)Mehdi ABAAKOUK2023-03-161-8/+13
| | | | | | | | | | | | | async_timeout does not support python 3.11 https://github.com/aio-libs/async-timeout/pull/295 And have two years old annoying bugs: https://github.com/aio-libs/async-timeout/issues/229 https://github.com/redis/redis-py/issues/2551 Since asyncio.timeout has been shipped in python 3.11, we should start using it. Partially fixes 2551
* Speeding up the protocol parsing (#2596)Chayim2023-03-151-13/+12
| | | | | | | * speeding up the protocol parser * linting * changes to ease
* Fix issue with `pack_commands` returning an empty byte sequence (#2416)jmcbailey2023-02-071-1/+2
| | | Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* Fix issue 2349: Let async HiredisParser finish parsing after a ↵Kristján Valur Jónsson2023-02-061-6/+9
| | | | | | | | | | | | | Connection.disconnect() (#2557) * A failing unittest * Do not clear the redis-reader's state when we disconnect so that it can finish reading the final message * Test that reading a message of two chunks after a disconnect() works. * Add Changes * fix typos
* Fix issue 2540: Synchronise concurrent command calls to single-client mode. ↵Vivanov982023-01-291-2/+13
| | | | | (#2568) Co-authored-by: Viktor Ivanov <viktor@infogrid.io>
* Make PythonParser resumable (#2510)Kristján Valur Jónsson2023-01-051-18/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | * PythonParser is now resumable if _stream IO is interrupted * Add test for parse resumability * Clear PythonParser state when connection or parsing errors occur. * disable test for cluster mode. * Perform "closed" check in a single place. * Update tests * Simplify code. * Remove reduntant test, EOF is detected inside _readline() * Make syncronous PythonParser restartable on error, same as HiredisParser Fix sync PythonParser * Add CHANGES * isort * Move MockStream and MockSocket into their own files
* Fix incorrect _disconnect_raise docstring (#2534)Mohsin Haider2023-01-051-2/+2
|
* replase get_event_loop wite get_running_loop (#2530)dvora-h2023-01-053-5/+5
|
* Add `timeout` parameter for SentinelManagedConnection (#2495)Guillaume Tassery2022-12-251-3/+10
|
* Combine auto-concatenated strings (#2482)David Gilman2022-12-142-6/+6
|
* Async clusters: Support creating locks inside async functions (#2471)Utkarsh Gupta2022-12-041-1/+5
| | | Co-authored-by: Chayim <chayim@users.noreply.github.com>
* Async: added 'blocking' argument to call lock method (#2454)Sibuken2022-12-012-0/+16
| | | Co-authored-by: Chayim <chayim@users.noreply.github.com>
* Added a replacement for the default cluster node in the event of failure. ↵Bar Shaul2022-12-011-1/+21
| | | | (#2463)
* Failover handling improvements for RedisCluster and Async RedisCluster (#2377)Bar Shaul2022-11-104-59/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Cluster&AsyncCluster: Removed handling of timeouts/connection errors within the cluster loop, fixed "cannot pickle '_thread.lock' object" bug, added client's side failover handling improvements * Fixed linters * Type fixes * Added to CHANGES * Added getter and setter for the client's retry object and added more tests * Fixed linters * Fixed test * Fixed test_client_kill test * Changed get_default_backoff to default_backoff, removed retry_on_error and connection_error_retry_attempts from RedisCluster, default retry changed to no retries * Fixing linters * Reverting deletion of connection_error_retry_attempts to maintain backward compatibility * Updating retry object for existing and new connections * Changed the default value of reinitialize_steps from 10 to 5 * fix review comments Co-authored-by: Chayim <chayim@users.noreply.github.com> Co-authored-by: dvora-h <dvora.heller@redis.com> Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* CredentialsProvider class added to support password rotation (#2261)Bar Shaul2022-11-103-11/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * A CredentialsProvider class has been added to allow the user to add his own provider for password rotation * Moved CredentialsProvider to a separate file, added type hints * Changed username and password to properties * Added: StaticCredentialProvider, examples, tests Changed: CredentialsProvider to CredentialProvider Fixed: calling AUTH only with password * Changed private members' prefix to __ * fixed linters * fixed auth test * fixed credential test * Raise an error if username or password are passed along with credential_provider * fixing linters * fixing test * Changed dundered to single per side underscore * Changed Connection class members username and password to properties to enable backward compatibility with changing the members value on existing connection. * Reverting last commit and adding backward compatibility to 'username' and 'password' inside on_connect function * Refactored CredentialProvider class * Fixing tuple type to Tuple * Fixing optional string members in UsernamePasswordCredentialProvider * Fixed credential test * Added credential provider support to AsyncRedis * linters * linters * linters * linters - black Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com> Co-authored-by: dvora-h <dvora.heller@redis.com>
* Fix special response parsing options handling (#2302)Shay Fadida2022-11-092-0/+9
| | | | | | | | | | | | | | | | | * Fix special response parsing options handling When using special response parsing options like `NEVER_DECODE` and `EMPTY_RESPONSE`, don't pass them to the response callbacks because some of them are not prepared for receiving named arguments. Instead, redis-py should use them before calling the callbacks and then discard them. * Use kwargs instead of options * change options to kwargs in asyncio/cluster.py/L878 Co-authored-by: Chayim <chayim@users.noreply.github.com> Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* Enable AsyncIO cluster mode lock (#2446)Milhan2022-11-092-4/+79
| | | Co-authored-by: Chayim <chayim@users.noreply.github.com>
* fix docs for password protected socket access (#2378)Robert Hofer2022-11-072-2/+2
| | | Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* Remove the superflous SocketBuffer from asyncio PythonParser (#2418)Kristján Valur Jónsson2022-10-301-133/+37
| | | | | | | | | | | * Remove buffering from asyncio SocketBuffer and rely on on the underlying StreamReader * Skip the use of SocketBuffer in PythonParser * Remove SocketBuffer altogether * Code cleanup * Fix unittest mocking when SocketBuffer is gone
* fix: catch OSError on asyncio (#2412)송형근(Hyeongguen Song)/DnU2022-10-251-2/+2
|
* Simplify async timeouts and allowing `timeout=None` in ↵v4.4.0rc2Kristján Valur Jónsson2022-09-292-108/+52
| | | | | | | | | | | | | | | | | | | `PubSub.get_message()` to wait forever (#2295) * Avoid an extra "can_read" call and use timeout directly. * Remove low-level read timeouts from the Parser, now handled in the Connection * Allow pubsub.get_message(time=None) to block. * update Changes * increase test timeout for robustness * expand with statement to avoid invoking null context managers. remove nullcontext * Remove unused import
* Dev/no can read (#2360)Kristján Valur Jónsson2022-09-292-38/+35
| | | | | | | | * make can_read() destructive for simplicity, and rename the method. Remove timeout argument, always timeout immediately. * don't use can_read in pubsub * connection.connect() now has its own retry, don't need it inside a retry loop
* Add `nowait` flag to `asyncio.Connection.disconnect()` (#2356)Kristján Valur Jónsson2022-09-291-10/+11
| | | | | | | | | | | | | | * Don't wait for disconnect() when handling errors. This can result in other errors such as timeouts. * add CHANGES * Update redis/asyncio/connection.py Co-authored-by: Aarni Koskela <akx@iki.fi> * await a task to try to diagnose unittest failures in CI Co-authored-by: Aarni Koskela <akx@iki.fi>
* Catch `Exception` and not `BaseException` in the `Connection` (#2104)Kristján Valur Jónsson2022-09-291-5/+3
| | | | | | | * Add failing unittests for passing BaseException through * Resolve failing unittest * Remove redundant checks for asyncio.CancelledError
* Dev/no lock (#2308)Kristján Valur Jónsson2022-09-282-40/+3
| | | | | * Remove async lock in asyncio.Connection.read_response * Skip concurrent-commands test on non-pooled connections
* Handle auth errors for newer versions of Redis. (#2325) (#2329)Luca Cillario2022-08-301-0/+11
|
* Replace `ensure_future` with `create_task` (#2311)dvora-h2022-08-021-6/+6
| | | | | * Replace `ensure_future` with `create_task` * linters
* automatically reconnect pubsub when reading messages in blocking mode (#2281)Kristján Valur Jónsson2022-07-271-3/+9
| | | | | | | | | | | | | | | | * optimistic default info on test sessionstart. Makes test discovery work, even without a redis connection. * Add unittests verifying that (non-async) PubSub will automatically reconnect * Add tests for asyncio pubsub subsciription auto-reconnect * automatically connect for blocking reads (asyncio) * fix automatic connect on blocking pubsub read (non-async) * lint & format * Perform `connect()` call in PubSub code rather than `read_response`.
* Drop python 3.6 support (#2306)dvora-h2022-07-273-29/+12
|
* async_cluster: fix max_connections/ssl & improve args (#2217)Utkarsh Gupta2022-07-271-181/+196
| | | | | | | | | | | | | | | | | | | | | | * 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>
* async_cluster: fix concurrent pipeline (#2280)Utkarsh Gupta2022-07-241-9/+9
| | | - each pipeline should create separate stacks for each node
* fix: workaround asyncio bug on connection reset by peer (#2259)Mehdi ABAAKOUK2022-07-241-1/+10
| | | Fixes #2237
* fix is_connected (#2278)dvora-h2022-07-211-1/+1
|
* Use retry mechanism in async version of Connection objects (#2271)szumka2022-07-212-2/+12
|
* commands/cluster: use pipeline to execute split commands (#2230)Utkarsh Gupta2022-06-271-6/+11
| | | | | | - allow passing target_nodes to pipeline commands - move READ_COMMANDS to commands/cluster to avoid import cycle - add types to list_or_args
* Fix retries in async mode (#2180)Eric Lemoine2022-06-193-3/+39
| | | | | | | | | * Avoid mutating a global retry_on_error list * Make retries config consistent in sync and async * Fix async retries * Add new TestConnectionConstructorWithRetry tests