rabbitkit 0.14.0__tar.gz → 0.15.0__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.
- {rabbitkit-0.14.0/src/rabbitkit.egg-info → rabbitkit-0.15.0}/PKG-INFO +9 -4
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/README.md +8 -3
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/pyproject.toml +1 -1
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/__init__.py +2 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/_version.py +1 -1
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/settlement.py +461 -107
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/highload/__init__.py +2 -0
- rabbitkit-0.15.0/src/rabbitkit/highload/async_acker.py +345 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/highload/batch.py +62 -5
- {rabbitkit-0.14.0 → rabbitkit-0.15.0/src/rabbitkit.egg-info}/PKG-INFO +9 -4
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit.egg-info/SOURCES.txt +1 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/LICENSE +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/setup.cfg +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/aio/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/async_/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/async_/batch.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/async_/broker.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/async_/connection.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/async_/pool.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/async_/transport.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/asyncapi/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/asyncapi/generator.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/asyncapi/schema.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/_utils.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/dlq.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/health.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/migrate.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/routes.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/run.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/shell.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/cli/commands/topology.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/concurrency.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/app.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/bulk.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/bulk_runner.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/config.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/env_config.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/errors.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/logging.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/message.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/path.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/pipeline.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/profiles.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/protocols.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/registry.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/retry_handoff.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/route.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/router.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/sanitizer.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/topology.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/topology_dispatch.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/core/types.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/dashboard/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/dashboard/app.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/di/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/di/context.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/di/depends.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/di/resolver.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/dlq.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/experimental/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/fastapi.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/health.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/highload/backpressure.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/locking.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/management.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/base.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/circuit_breaker.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/compression.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/deduplication.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/error_classifier.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/exception.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/metrics.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/otel.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/rate_limit.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/retry.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/signing.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/middleware/timeout.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/py.typed +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/queue_metrics.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/results/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/results/backend.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/results/middleware.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/rpc.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/serialization/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/serialization/base.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/serialization/json.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/serialization/msgspec.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/serialization/pipeline.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/streams.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/sync/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/sync/batch.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/sync/broker.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/sync/connection.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/sync/pool.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/sync/transport.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/testing/__init__.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/testing/app.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/testing/broker.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit/testing/fixtures.py +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit.egg-info/dependency_links.txt +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit.egg-info/entry_points.txt +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit.egg-info/requires.txt +0 -0
- {rabbitkit-0.14.0 → rabbitkit-0.15.0}/src/rabbitkit.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rabbitkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.15.0
|
|
4
4
|
Summary: Production-grade RabbitMQ toolkit — sync/async, decorator routing, retry, compression, full configurability
|
|
5
5
|
Author-email: Talaat Magdy <talaatmagdy75@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -423,9 +423,14 @@ management_client=...)`) verify confirms/mandatory/persistence, a 256 KiB body
|
|
|
423
423
|
cap, quorum queues and a quorum retry chain — and report anything they cannot
|
|
424
424
|
verify as *unverified*, never green. Retry/DLQ triage headers are sanitized by
|
|
425
425
|
default, and a failing delay-queue handoff backs off instead of hot-looping.
|
|
426
|
-
`CoalescingAcker` is the only place a cumulative
|
|
427
|
-
may originate: it knows every delivery on the
|
|
428
|
-
through a completed prefix, so a still-running
|
|
426
|
+
`CoalescingAcker` (and `AsyncCoalescingAcker`) is the only place a cumulative
|
|
427
|
+
`basic.ack(multiple=True)` may originate: it knows every delivery on the
|
|
428
|
+
channel and coalesces only through a completed prefix, so a still-running
|
|
429
|
+
sibling is never acked early. Settlement follows a **plan / emit / commit**
|
|
430
|
+
protocol — the ledger advances only for frames the broker actually accepted,
|
|
431
|
+
and emission stops at the first failure, because a cumulative ack that
|
|
432
|
+
follows a nack which never landed would acknowledge the very delivery meant
|
|
433
|
+
to be requeued.
|
|
429
434
|
Every bulk path emits bounded-label metrics
|
|
430
435
|
(`rabbitkit_bulk_publish_items_total{status,reason}`,
|
|
431
436
|
`rabbitkit_settlement_items_total{action,status}`,
|
|
@@ -342,9 +342,14 @@ management_client=...)`) verify confirms/mandatory/persistence, a 256 KiB body
|
|
|
342
342
|
cap, quorum queues and a quorum retry chain — and report anything they cannot
|
|
343
343
|
verify as *unverified*, never green. Retry/DLQ triage headers are sanitized by
|
|
344
344
|
default, and a failing delay-queue handoff backs off instead of hot-looping.
|
|
345
|
-
`CoalescingAcker` is the only place a cumulative
|
|
346
|
-
may originate: it knows every delivery on the
|
|
347
|
-
through a completed prefix, so a still-running
|
|
345
|
+
`CoalescingAcker` (and `AsyncCoalescingAcker`) is the only place a cumulative
|
|
346
|
+
`basic.ack(multiple=True)` may originate: it knows every delivery on the
|
|
347
|
+
channel and coalesces only through a completed prefix, so a still-running
|
|
348
|
+
sibling is never acked early. Settlement follows a **plan / emit / commit**
|
|
349
|
+
protocol — the ledger advances only for frames the broker actually accepted,
|
|
350
|
+
and emission stops at the first failure, because a cumulative ack that
|
|
351
|
+
follows a nack which never landed would acknowledge the very delivery meant
|
|
352
|
+
to be requeued.
|
|
348
353
|
Every bulk path emits bounded-label metrics
|
|
349
354
|
(`rabbitkit_bulk_publish_items_total{status,reason}`,
|
|
350
355
|
`rabbitkit_settlement_items_total{action,status}`,
|
|
@@ -115,6 +115,7 @@ from rabbitkit.health import (
|
|
|
115
115
|
broker_readiness,
|
|
116
116
|
broker_readiness_async,
|
|
117
117
|
)
|
|
118
|
+
from rabbitkit.highload.async_acker import AsyncCoalescingAcker
|
|
118
119
|
from rabbitkit.highload.backpressure import FlowController
|
|
119
120
|
from rabbitkit.highload.batch import (
|
|
120
121
|
BatchAcker,
|
|
@@ -163,6 +164,7 @@ __all__ = [
|
|
|
163
164
|
"AsyncAPIGeneratorConfig",
|
|
164
165
|
"AsyncBatchPublisher",
|
|
165
166
|
"AsyncBroker",
|
|
167
|
+
"AsyncCoalescingAcker",
|
|
166
168
|
"AsyncHealthWatcher",
|
|
167
169
|
"AsyncWorkerPool",
|
|
168
170
|
"BackpressureConfig",
|