redis-message-queue 8.2.6__tar.gz → 8.2.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/PKG-INFO +2 -2
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/README.md +1 -1
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/pyproject.toml +2 -2
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/asyncio/redis_message_queue.py +17 -3
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/redis_message_queue.py +22 -1
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/.gitignore +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/LICENSE +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/__init__.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_abstract_redis_gateway.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_callable_utils.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_config.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_event.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_exceptions.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_payload_limits.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_queue_key_manager.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_redis_cluster.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_redis_gateway.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_stored_message.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/asyncio/__init__.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/asyncio/_abstract_redis_gateway.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/asyncio/_redis_gateway.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/interrupt_handler/__init__.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/interrupt_handler/_event_driven.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/interrupt_handler/_implementation.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/interrupt_handler/_interface.py +0 -0
- {redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: redis-message-queue
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.7
|
|
4
4
|
Summary: Python message queuing with Redis and message deduplication
|
|
5
5
|
Project-URL: Homepage, https://github.com/Elijas/redis-message-queue
|
|
6
6
|
Project-URL: Repository, https://github.com/Elijas/redis-message-queue
|
|
@@ -34,7 +34,7 @@ Description-Content-Type: text/markdown
|
|
|
34
34
|
**Lightweight Python message queuing with Redis and built-in publish-side deduplication.** Deduplicate publishes within a TTL window, with optional crash recovery — across any number of producers and consumers.
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
pip install "redis-message-queue>=8.2.
|
|
37
|
+
pip install "redis-message-queue>=8.2.7,<9.0.0"
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Requires Redis server >= 6.2.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
**Lightweight Python message queuing with Redis and built-in publish-side deduplication.** Deduplicate publishes within a TTL window, with optional crash recovery — across any number of producers and consumers.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
pip install "redis-message-queue>=8.2.
|
|
14
|
+
pip install "redis-message-queue>=8.2.7,<9.0.0"
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Requires Redis server >= 6.2.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "redis-message-queue"
|
|
3
|
-
version = "8.2.
|
|
3
|
+
version = "8.2.7"
|
|
4
4
|
description = "Python message queuing with Redis and message deduplication"
|
|
5
5
|
authors = [{ name = "Elijas", email = "4084885+Elijas@users.noreply.github.com" }]
|
|
6
6
|
readme = "README.md"
|
|
@@ -48,7 +48,7 @@ default-groups = ["dev", "test"]
|
|
|
48
48
|
##############################
|
|
49
49
|
|
|
50
50
|
[tool.bumpversion]
|
|
51
|
-
current_version = "8.2.
|
|
51
|
+
current_version = "8.2.7"
|
|
52
52
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
53
53
|
serialize = ["{major}.{minor}.{patch}"]
|
|
54
54
|
search = "{current_version}"
|
|
@@ -1072,9 +1072,23 @@ class RedisMessageQueue:
|
|
|
1072
1072
|
"See AbstractRedisGateway.add_message for the full contract."
|
|
1073
1073
|
)
|
|
1074
1074
|
else:
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1075
|
+
try:
|
|
1076
|
+
dedup_key = self._get_deduplication_key(message)
|
|
1077
|
+
if inspect.isawaitable(dedup_key):
|
|
1078
|
+
dedup_key = await dedup_key
|
|
1079
|
+
except asyncio.CancelledError as exc:
|
|
1080
|
+
current_task = asyncio.current_task()
|
|
1081
|
+
if current_task is not None and current_task.cancelling() > 0:
|
|
1082
|
+
raise
|
|
1083
|
+
_set_exception_context(exc, queue=self._queue_name, operation="publish")
|
|
1084
|
+
await self._emit_event(
|
|
1085
|
+
"publish",
|
|
1086
|
+
"failure",
|
|
1087
|
+
exception_type=type(exc).__name__,
|
|
1088
|
+
error=exc,
|
|
1089
|
+
duration_ms=_duration_ms(started_at),
|
|
1090
|
+
)
|
|
1091
|
+
raise
|
|
1078
1092
|
dedup_key = validate_callable_deduplication_key(dedup_key, message)
|
|
1079
1093
|
dedup_key = self.key.deduplication(dedup_key)
|
|
1080
1094
|
result = await self._redis.publish_message(self.key.pending, message_str, dedup_key)
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/redis_message_queue.py
RENAMED
|
@@ -80,6 +80,14 @@ def _duration_ms(started_at: float) -> float:
|
|
|
80
80
|
return (time.perf_counter() - started_at) * 1000
|
|
81
81
|
|
|
82
82
|
|
|
83
|
+
def _current_async_task_is_cancelling() -> bool:
|
|
84
|
+
try:
|
|
85
|
+
current_task = asyncio.current_task()
|
|
86
|
+
except RuntimeError:
|
|
87
|
+
return False
|
|
88
|
+
return current_task is not None and current_task.cancelling() > 0
|
|
89
|
+
|
|
90
|
+
|
|
83
91
|
def _hash_lease_token(lease_token: str | None) -> str | None:
|
|
84
92
|
if lease_token is None:
|
|
85
93
|
return None
|
|
@@ -1017,7 +1025,20 @@ class RedisMessageQueue:
|
|
|
1017
1025
|
"See AbstractRedisGateway.add_message for the full contract."
|
|
1018
1026
|
)
|
|
1019
1027
|
else:
|
|
1020
|
-
|
|
1028
|
+
try:
|
|
1029
|
+
dedup_key = self._get_deduplication_key(message)
|
|
1030
|
+
except asyncio.CancelledError as exc:
|
|
1031
|
+
if _current_async_task_is_cancelling():
|
|
1032
|
+
raise
|
|
1033
|
+
_set_exception_context(exc, queue=self._queue_name, operation="publish")
|
|
1034
|
+
self._emit_event(
|
|
1035
|
+
"publish",
|
|
1036
|
+
"failure",
|
|
1037
|
+
exception_type=type(exc).__name__,
|
|
1038
|
+
error=exc,
|
|
1039
|
+
duration_ms=_duration_ms(started_at),
|
|
1040
|
+
)
|
|
1041
|
+
raise
|
|
1021
1042
|
if inspect.isawaitable(dedup_key):
|
|
1022
1043
|
is_coroutine = inspect.iscoroutine(dedup_key)
|
|
1023
1044
|
_close_or_cancel_awaitable(dedup_key)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_callable_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_payload_limits.py
RENAMED
|
File without changes
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_queue_key_manager.py
RENAMED
|
File without changes
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_redis_cluster.py
RENAMED
|
File without changes
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_redis_gateway.py
RENAMED
|
File without changes
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/_stored_message.py
RENAMED
|
File without changes
|
{redis_message_queue-8.2.6 → redis_message_queue-8.2.7}/redis_message_queue/asyncio/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|