Skip to content

fix(redis): keep an unacked message when its restore hits a connection error - #2767

Merged
auvipy merged 2 commits into
celery:mainfrom
ericdelorefice:fix/redis-restore-keep-unacked-on-connection-error
Oct 20, 2026
Merged

auvipy merged 2 commits into
celery:mainfrom
ericdelorefice:fix/redis-restore-keep-unacked-on-connection-error

Conversation

@ericdelorefice

Copy link
Copy Markdown
Contributor

The Redis transport moves an unacked message back to its queue in one transaction, since #1444 made the restore atomic for #1405 so a message is never left half-moved. This keeps that transaction from committing when the queue lookup inside it fails: today a connection error there deletes the message instead of restoring it.

Problem

With ack emulation (the default), QoS.restore_by_tag and Channel._restore run restore_transaction through client.transaction(). It queues HDEL (and ZREM) on the unacked keys and then calls _do_restore_message, which queues RPUSH/LPUSH onto every queue _lookup(exchange, routing_key) returns. For a named exchange, _lookup reads the bindings with get_table, an SMEMBERS on another pooled connection, made while the transaction is open.

_do_restore_message wraps all of this in except Exception, logs "Could not restore message" at CRITICAL and returns. When that SMEMBERS times out or its connection drops, restore_transaction returns normally, redis-py sends EXEC with only the removal queued, and the message is gone from Redis. Kombu's Redis clients make no retries by default (the connection's retry has 0 retries here), so one failed SMEMBERS is enough. #1784 shows this lookup raising inside _do_restore_message in production (there, under a signal-based timeout); it does not report a lost message.

All three restore paths go through it:

  • message.requeue() (QoS.reject(requeue=True)) returns normally and the message is gone.
  • the visibility-timeout sweep (restore_visible) deletes it.
  • the restore when a channel closes with messages unacked deletes it.

It needs a named exchange. Celery's default direct routing publishes through the default exchange (''), and _lookup answers that without a lookup, so default Celery routing does not reach it; kombu producers that publish to a named exchange, and Celery routes that set an exchange and routing key, do.

Reproduction

Real kombu from main (c35fe8d), redis-py 8.1.0 and a local Redis 8.10.2 server. The failure is injected: redis.Redis.smembers raises redis.exceptions.TimeoutError("Timeout reading from socket") once, for the binding lookup only. I have not seen the message loss in a user report. The transaction and everything else run against the server.

One message published to a named direct exchange, taken with get(no_ack=False), then restored with the lookup failing once:

On main:

== message.requeue()
  log CRITICAL kombu.transport.redis: Could not restore message: {'body': 'eyJqb2IiOiAxfQ==', ...
  call returned normally
  after the call: queue 'work' holds 0, unacked hash holds 0, unacked index holds 0
== visibility sweep (maybe_restore_messages -> restore_visible)
  after the call: queue 'work' holds 0, unacked hash holds 0, unacked index holds 0
== channel.close() with the message unacked
  after the call: queue 'work' holds 0, unacked hash holds 0, unacked index holds 0

With this change:

== message.requeue()
  call raised redis.exceptions.TimeoutError: Timeout reading from socket
  after the call: queue 'work' holds 0, unacked hash holds 1, unacked index holds 1
  after a later healthy restore_visible sweep: queue 'work' holds 1, unacked hash holds 0, unacked index holds 0
== visibility sweep (maybe_restore_messages -> restore_visible)
  call returned normally
  after the call: queue 'work' holds 0, unacked hash holds 1, unacked index holds 1
  after a later healthy restore_visible sweep: queue 'work' holds 1, unacked hash holds 0, unacked index holds 0
== channel.close() with the message unacked
  call raised redis.exceptions.TimeoutError: Timeout reading from socket
  after the call: queue 'work' holds 0, unacked hash holds 1, unacked index holds 1
  after a later healthy restore_visible sweep: queue 'work' holds 1, unacked hash holds 0, unacked index holds 0

Without the injected failure, all three paths requeue the message on both main and this branch.

Change

_do_restore_message re-raises the channel's connection_errors (4 added lines), so restore_transaction raises, redis-py discards the queued commands, and the message stays in the unacked keys for a later restore. The sweep path already expects this: MultiChannelPoller.maybe_restore_messages catches connection_errors from restore_visible and retries on the next cycle (#2498). Any other exception is still logged with the payload and the message dropped, as before, so a payload that can never be restored does not come back on every sweep.

Intended behaviour changes, on a connection error during the restore only:

  • message.requeue() raises the connection error instead of returning. The message is still unacked, so the requeue can be retried, or the visibility-timeout sweep restores it.
  • Channel.close() raises it from the restore at close, as it already does when the restore's own transaction cannot reach Redis. The message, and any other message that close had not yet restored, stays unacked until the visibility-timeout sweep requeues it.

In the unit tests, the test Transport uses KeyError as its connection error, so test_do_restore_message now makes rpush raise ValueError to keep testing the log-and-drop path it was written for.

Testing

macOS, Python 3.12.14, redis-py 8.1.0, plain pytest.

  • t/unit/transport/test_redis.py: 3 new tests fail on main and pass with this change: _do_restore_message re-raises a connection error from the lookup without logging it or queueing a push, and Channel._restore and QoS.restore_by_tag raise it and leave the stored unacked entry (and index) unchanged, through a transaction stand-in that only applies the queued commands when the callable returns, as redis-py does. 2 new controls pass both ways: a non-connection error is still logged with the payload, and a successful lookup requeues the message with redelivered set.
  • t/integration/test_redis.py, new test_RedisRestoreBindingLookupFailure, against Redis 8.10.2 with and without global_keyprefix: requeue() and restore_visible with the lookup failing raise the timeout, leave the unacked entry unchanged and the queue empty, and a later healthy requeue or sweep delivers the message exactly once (4 runs, fail on main); a plain requeue control (2 runs) passes both ways.
  • With the source reverted to main and the new tests kept, the 7 fail, and they pass with the change, ten runs each way; the controls pass both ways.
  • t/unit: 1512 passed on main, 1517 on this branch (190 skipped). Six modules were not collected here because their optional dependencies (botocore, azure, google) are not installed.
  • t/integration/test_redis.py against a local Redis 8.10.2 started without Docker (not the tox Docker environment): 111 passed on main, 117 on this branch. The same 6 health-check tests (test_RedisSubclientHealthCheck::test_missed_pongs_drop_connection_and_resubscribe and two test_RedisBrpopHealthCheck half-open tests, each with both connection params) fail on this machine on main and on this branch alike.
  • pre-commit run --files on the three changed files: all hooks that apply passed (pyupgrade, autoflake, flake8, yesqa, codespell, check-merge-conflict, mixed-line-ending, isort, mypy). pydocstyle kombu/transport/redis.py (the tox pydocstyle env) reports nothing.

This PR was written with AI assistance (Claude Code); the tests above were run before opening it.

…n error

With ack emulation, putting an unacked message back on its queue runs in
one transaction: HDEL/ZREM from the unacked keys, then LPUSH/RPUSH onto
the queue. For a named exchange the queue comes from a binding lookup
(SMEMBERS) made on another connection inside _do_restore_message, and
that method logged and swallowed every exception. A timeout or dropped
connection on the lookup therefore let the transaction run with only the
removal queued, so requeue(), the visibility-timeout sweep and the
restore at channel close all deleted the message instead of restoring
it.

Re-raise the channel's connection errors so the transaction aborts and
the message stays unacked for a later restore. Other errors are still
logged with the payload, as before.
@auvipy
auvipy self-requested a review October 18, 2026 16:54
@auvipy auvipy added this to the 5.7.0 milestone Oct 18, 2026
@codecov

codecov Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.50%. Comparing base (c35fe8d) to head (b95d479).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2767      +/-   ##
==========================================
+ Coverage   85.47%   85.50%   +0.02%     
==========================================
  Files          80       80              
  Lines       11460    11462       +2     
  Branches     1374     1374              
==========================================
+ Hits         9796     9801       +5     
+ Misses       1442     1440       -2     
+ Partials      222      221       -1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@MehrazRumman MehrazRumman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked at 4c08e75. t/unit/transport/test_redis.py passes (288 passed). The three new failure-path tests fail against main's redis.py, and the controls pass both ways. CI is green, including the Redis integration jobs that run the new test_RedisRestoreBindingLookupFailure.

The change looks right

  • Re-raising connection_errors from _do_restore_message makes restore_transaction raise, so redis-py's transaction() never sends EXEC. The HDEL/ZREM queued with the push are discarded, and the message stays in the unacked hash and index. Without it, a failed SMEMBERS lets EXEC commit the removal with no push, which is the loss described.
  • Other exceptions still go to the existing log-and-drop path, so a payload that can never be routed doesn't come back on every sweep. That is the right split.
  • How each caller handles the new exception:
    • restore_visible: MultiChannelPoller.maybe_restore_messages already catches connection_errors and retries next cycle (#2498). The Mutex is released in its finally, and the remaining due tags of that batch wait for the next sweep, which is fine.
    • QoS.reject(requeue=True): when restore_by_tag raises, super().ack(tag) is skipped, so the tag stays in _delivered and a later close or sweep can still restore it. Celery calls this through Message.reject_log_error, which catches the transport's connection errors and logs them, so a worker doesn't crash on this path.

Suggestions

  1. message.requeue() / reject(requeue=True) and Channel.close() can now raise a Redis connection error where they used to return. That is the correct trade (an exception rather than a silently lost message), but it is visible to direct kombu users who call requeue() without a try. A changelog line saying so would help.
  2. For Channel.close(), the description notes that messages after the failing one stay unacked until the visibility timeout. That is worth one sentence in the same changelog line, since recovery then waits up to visibility_timeout (1 h by default) instead of happening at close.

@ericdelorefice

Copy link
Copy Markdown
Contributor Author

Thanks @MehrazRumman for checking it against main and for walking through each caller, especially the reject_log_error path in Celery.

Agreed on the changelog note. Since the changelog here is written at release time, I left it out of the PR, but I'm happy to add a line if @auvipy prefers it in the PR. Suggested wording:

  • Redis: a connection error while restoring an unacked message now raises from Message.requeue() and Channel.close() instead of deleting the message. The message stays unacked, and messages a failed close did not restore are requeued by the visibility-timeout sweep.

@auvipy

auvipy commented Oct 20, 2026

Copy link
Copy Markdown
Member

no changelog entry is needed in the PR. only doc update is OK only if it is needed.

@auvipy
auvipy merged commit 956a094 into celery:main Oct 20, 2026
38 of 39 checks passed
giuseppe99barchetta added a commit to giuseppe99barchetta/SuggestArr that referenced this pull request Nov 9, 2026
#563)

Bumps the python-deps group in /api_service with 4 updates:
[amqp](https://github.com/celery/py-amqp),
[billiard](https://github.com/celery/billiard),
[kombu](https://github.com/celery/kombu) and
[openai](https://github.com/openai/openai-python).

Updates `amqp` from 5.4.1 to 5.4.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/celery/py-amqp/releases">amqp's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.2</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: fix all Sphinx warnings in <a
href="https://redirect.github.com/celery/py-amqp/issues/362">#362</a> by
<a href="https://github.com/G-Glitch404"><code>@​G-Glitch404</code></a>
in <a
href="https://redirect.github.com/celery/py-amqp/pull/479">celery/py-amqp#479</a></li>
<li>Fix publisher confirm state after channel revive by <a
href="https://github.com/G-Glitch404"><code>@​G-Glitch404</code></a> in
<a
href="https://redirect.github.com/celery/py-amqp/pull/477">celery/py-amqp#477</a></li>
<li>Fix non-UTF-8 field-table keys by <a
href="https://github.com/G-Glitch404"><code>@​G-Glitch404</code></a> in
<a
href="https://redirect.github.com/celery/py-amqp/pull/478">celery/py-amqp#478</a></li>
<li>Always return the consumer tag from basic_consume by <a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
in <a
href="https://redirect.github.com/celery/py-amqp/pull/481">celery/py-amqp#481</a></li>
<li>Forget no_ack consumers cancelled by the broker by <a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
in <a
href="https://redirect.github.com/celery/py-amqp/pull/483">celery/py-amqp#483</a></li>
<li>Send the content header for empty bodies on the slow write path by
<a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
in <a
href="https://redirect.github.com/celery/py-amqp/pull/485">celery/py-amqp#485</a></li>
<li>Flush pending bits around timestamp and byte array fields by <a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
in <a
href="https://redirect.github.com/celery/py-amqp/pull/484">celery/py-amqp#484</a></li>
<li>Release prep for v5.4.2 by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/py-amqp/pull/491">celery/py-amqp#491</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/G-Glitch404"><code>@​G-Glitch404</code></a>
made their first contribution in <a
href="https://redirect.github.com/celery/py-amqp/pull/479">celery/py-amqp#479</a></li>
<li><a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
made their first contribution in <a
href="https://redirect.github.com/celery/py-amqp/pull/481">celery/py-amqp#481</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/celery/py-amqp/compare/v5.4.1...v5.4.2">https://github.com/celery/py-amqp/compare/v5.4.1...v5.4.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/celery/py-amqp/blob/main/Changelog">amqp's
changelog</a>.</em></p>
<blockquote>
<h1>5.4.2</h1>
<p>:release-date: 2026-11-02
:release-by: Asif Saif Uddin (<a
href="https://github.com/auvipy"><code>@​auvipy</code></a>)</p>
<ul>
<li>Fix publisher confirm state after channel revive (<a
href="https://redirect.github.com/celery/py-amqp/issues/477">#477</a>).</li>
<li>Fix non-UTF-8 field-table keys.</li>
<li>Always return the consumer tag from basic_consume (<a
href="https://redirect.github.com/celery/py-amqp/issues/481">#481</a>).</li>
<li>Forget no_ack consumers cancelled by the broker - <a
href="https://redirect.github.com/celery/py-amqp/issues/483">#483</a>.</li>
<li>Send the content header for empty bodies on the slow write
path.</li>
<li>Flush pending bits around timestamp and byte array fields (<a
href="https://redirect.github.com/celery/py-amqp/issues/484">#484</a>).</li>
</ul>
<p>.. _version-5.4.1:</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/celery/py-amqp/commit/9d4a51a104021ef2f1920744087add8638cc2cc6"><code>9d4a51a</code></a>
Bump version: 5.4.1 → 5.4.2</li>
<li><a
href="https://github.com/celery/py-amqp/commit/2c70aa8703b521bf58e024e7cd51e9f73e2a21bc"><code>2c70aa8</code></a>
added changelog for v5.4.2 release</li>
<li><a
href="https://github.com/celery/py-amqp/commit/970fa1371320056f8aaf7e982d8c7353e1897e11"><code>970fa13</code></a>
Flush pending bits around timestamp and byte array fields (<a
href="https://redirect.github.com/celery/py-amqp/issues/484">#484</a>)</li>
<li><a
href="https://github.com/celery/py-amqp/commit/31a4602bbdf4d3b217cb4af4178106e430bad6db"><code>31a4602</code></a>
Send the content header for empty bodies on the slow write path</li>
<li><a
href="https://github.com/celery/py-amqp/commit/b4326437d8073c7e26e2556fd110313fbf16d1a1"><code>b432643</code></a>
Forget no_ack consumers cancelled by the broker</li>
<li><a
href="https://github.com/celery/py-amqp/commit/a259045ab6f997e51e9d4f9bbc0c50d82326d6c6"><code>a259045</code></a>
Always return the consumer tag from basic_consume (<a
href="https://redirect.github.com/celery/py-amqp/issues/481">#481</a>)</li>
<li><a
href="https://github.com/celery/py-amqp/commit/e58240b012d5ed8d8716cf7537d2b36a09d3d7e0"><code>e58240b</code></a>
Fix non-UTF-8 field-table keys</li>
<li><a
href="https://github.com/celery/py-amqp/commit/15fb95f7a89e20b95ebaffcdf89b1473887aa241"><code>15fb95f</code></a>
Fix publisher confirm state after channel revive (<a
href="https://redirect.github.com/celery/py-amqp/issues/477">#477</a>)</li>
<li><a
href="https://github.com/celery/py-amqp/commit/5324feb1428f597af0f21d48e6237eee972c354e"><code>5324feb</code></a>
docs: fix Sphinx warnings in documentation (<a
href="https://redirect.github.com/celery/py-amqp/issues/362">#362</a>)</li>
<li>See full diff in <a
href="https://github.com/celery/py-amqp/compare/v5.4.1...v5.4.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `billiard` from 4.3.1 to 4.3.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/celery/billiard/releases">billiard's
releases</a>.</em></p>
<blockquote>
<h2>v4.3.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix flaky timeout and context availability in
test_on_ready_counter_is_synchronized (<a
href="https://redirect.github.com/celery/billiard/issues/415">#415</a>)
by <a href="https://github.com/0xrutabaga"><code>@​0xrutabaga</code></a>
in <a
href="https://redirect.github.com/celery/billiard/pull/472">celery/billiard#472</a></li>
<li>Fix spawn when the main module is a script by <a
href="https://github.com/RazerM"><code>@​RazerM</code></a> in <a
href="https://redirect.github.com/celery/billiard/pull/470">celery/billiard#470</a></li>
<li>Fix AttributeError on Windows when terminating worker on hard
timeout by <a
href="https://github.com/0xrutabaga"><code>@​0xrutabaga</code></a> in <a
href="https://redirect.github.com/celery/billiard/pull/471">celery/billiard#471</a></li>
<li>Allow a pool to start with zero processes by <a
href="https://github.com/GangEunzzang"><code>@​GangEunzzang</code></a>
in <a
href="https://redirect.github.com/celery/billiard/pull/477">celery/billiard#477</a></li>
<li>Credit READY to the worker that ran the task by <a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
in <a
href="https://redirect.github.com/celery/billiard/pull/474">celery/billiard#474</a></li>
<li>Fix pool terminate() hang when a worker dies holding the outqueue
lock by <a
href="https://github.com/GangEunzzang"><code>@​GangEunzzang</code></a>
in <a
href="https://redirect.github.com/celery/billiard/pull/479">celery/billiard#479</a></li>
<li>Reject nonpositive chunksizes in pool imap methods by <a
href="https://github.com/JackyHsu-X"><code>@​JackyHsu-X</code></a> in <a
href="https://redirect.github.com/celery/billiard/pull/481">celery/billiard#481</a></li>
<li>Raise the task's exception from imap() iterators by <a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
in <a
href="https://redirect.github.com/celery/billiard/pull/480">celery/billiard#480</a></li>
<li>Release Prep for v4.3.2 by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/billiard/pull/482">celery/billiard#482</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/0xrutabaga"><code>@​0xrutabaga</code></a> made
their first contribution in <a
href="https://redirect.github.com/celery/billiard/pull/472">celery/billiard#472</a></li>
<li><a href="https://github.com/RazerM"><code>@​RazerM</code></a> made
their first contribution in <a
href="https://redirect.github.com/celery/billiard/pull/470">celery/billiard#470</a></li>
<li><a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>
made their first contribution in <a
href="https://redirect.github.com/celery/billiard/pull/474">celery/billiard#474</a></li>
<li><a
href="https://github.com/JackyHsu-X"><code>@​JackyHsu-X</code></a> made
their first contribution in <a
href="https://redirect.github.com/celery/billiard/pull/481">celery/billiard#481</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/celery/billiard/compare/v4.3.1...v4.3.2">https://github.com/celery/billiard/compare/v4.3.1...v4.3.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/celery/billiard/blob/main/CHANGES.txt">billiard's
changelog</a>.</em></p>
<blockquote>
<h2>4.3.2 - 2026-11-02</h2>
<ul>
<li>Fix flaky timeout and context availability in
test_on_ready_counter_is_synchronized.</li>
<li>Fix spawn when the main module is a script (<a
href="https://redirect.github.com/celery/billiard/issues/470">#470</a>).</li>
<li>Fix AttributeError on Windows when terminating worker on hard
timeout (<a
href="https://redirect.github.com/celery/billiard/issues/471">#471</a>).</li>
<li>Allow a pool to start with zero processes (<a
href="https://redirect.github.com/celery/billiard/issues/477">#477</a>).</li>
<li>Credit READY to the worker that ran the task (<a
href="https://redirect.github.com/celery/billiard/issues/474">#474</a>).</li>
<li>Fix pool terminate() hang when a worker dies holding the outqueue
lock (<a
href="https://redirect.github.com/celery/billiard/issues/479">#479</a>).</li>
<li>Raise the task's exception from imap() iterators (<a
href="https://redirect.github.com/celery/billiard/issues/480">#480</a>).</li>
<li>Reject non-positive chunksize in Pool.imap() and
Pool.imap_unordered(),
including when Python runs with optimization enabled.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/celery/billiard/commit/895817a456af1a56c28675dfe4e22b87b991a72a"><code>895817a</code></a>
Bump version: 4.3.1 → 4.3.2</li>
<li><a
href="https://github.com/celery/billiard/commit/3a9eb788699609b3f810bef8ba28a6ec8bc2b326"><code>3a9eb78</code></a>
updated security guideline</li>
<li><a
href="https://github.com/celery/billiard/commit/b20dd15c52cb5b38094dd7ee22c96a744b10ab5b"><code>b20dd15</code></a>
added changelog for v4.3.2 release</li>
<li><a
href="https://github.com/celery/billiard/commit/17cddec766a5d085f2c49334c8b0eb2e60e88adc"><code>17cddec</code></a>
Raise the task's exception from imap() iterators (<a
href="https://redirect.github.com/celery/billiard/issues/480">#480</a>)</li>
<li><a
href="https://github.com/celery/billiard/commit/7d2fcd2a2d0978d2c9062b8566fac0f7f84e5399"><code>7d2fcd2</code></a>
Reject nonpositive chunksizes in pool imap methods</li>
<li><a
href="https://github.com/celery/billiard/commit/3a806fbfec4c419ea5f776fa6668e26863c4b4c0"><code>3a806fb</code></a>
Fix pool terminate() hang when a worker dies holding the outqueue lock
(<a
href="https://redirect.github.com/celery/billiard/issues/479">#479</a>)</li>
<li><a
href="https://github.com/celery/billiard/commit/fe23965ebe22c5ae9491073d07892d5e0d5b2181"><code>fe23965</code></a>
Credit READY to the worker that ran the task (<a
href="https://redirect.github.com/celery/billiard/issues/474">#474</a>)</li>
<li><a
href="https://github.com/celery/billiard/commit/7efd7735fcdaa384e990dc58bc2755ad6d7e1b37"><code>7efd773</code></a>
Allow a pool to start with zero processes (<a
href="https://redirect.github.com/celery/billiard/issues/477">#477</a>)</li>
<li><a
href="https://github.com/celery/billiard/commit/531c3ae81897bb73ccbb7df38abe4fb7a24d5bfc"><code>531c3ae</code></a>
Fix AttributeError on Windows when terminating worker on hard timeout
(<a
href="https://redirect.github.com/celery/billiard/issues/471">#471</a>)</li>
<li><a
href="https://github.com/celery/billiard/commit/40a82b1533e3e170cc24a5aec91c2c56a8e2c415"><code>40a82b1</code></a>
Fix spawn when the main module is a script (<a
href="https://redirect.github.com/celery/billiard/issues/470">#470</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/celery/billiard/compare/v4.3.1...v4.3.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `kombu` from 5.6.2 to 5.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/celery/kombu/releases">kombu's
releases</a>.</em></p>
<blockquote>
<h2>v5.7.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add missing reprkwargs export to utils module by <a
href="https://github.com/oliverhaas"><code>@​oliverhaas</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2436">celery/kombu#2436</a></li>
<li>Remove Python 3.9 from CI workflow by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2448">celery/kombu#2448</a></li>
<li>Update Python and OS version in Read the Docs config by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2450">celery/kombu#2450</a></li>
<li>Update redis requirement from !=4.5.5,!=5.0.2,&lt;6.5,&gt;=4.5.2 to
&gt;=4.5.2,!=4.5.5,!=5.0.2,&lt;7.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2398">celery/kombu#2398</a></li>
<li>Update Python versions in tox.ini configuration by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2449">celery/kombu#2449</a></li>
<li>Bump pymongo from 4.10.1 to 4.15.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2386">celery/kombu#2386</a></li>
<li>Bump pytest from 8.4.2 to 9.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2438">celery/kombu#2438</a></li>
<li>Bump protobuf from 6.32.1 to 6.33.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2428">celery/kombu#2428</a></li>
<li>Bump protobuf from 6.33.2 to 6.33.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2452">celery/kombu#2452</a></li>
<li>Bump grpcio from 1.75.1 to 1.76.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2397">celery/kombu#2397</a></li>
<li>Revert &quot;Bump grpcio from 1.75.1 to 1.76.0&quot; by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2454">celery/kombu#2454</a></li>
<li>Update grpcio version to 1.76.0 by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2455">celery/kombu#2455</a></li>
<li>Remove invalid Python version from workflow by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2459">celery/kombu#2459</a></li>
<li>Update pypy to 3.11 by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2328">celery/kombu#2328</a></li>
<li>Update Python versions in tox.ini by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2460">celery/kombu#2460</a></li>
<li>Add support for fair queue in SQS by <a
href="https://github.com/MartinSiby"><code>@​MartinSiby</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2342">celery/kombu#2342</a></li>
<li>Support redis queue expiration by <a
href="https://github.com/ffje"><code>@​ffje</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2251">celery/kombu#2251</a></li>
<li>Fix Logwrapped not supporting context manager protocol by <a
href="https://github.com/veeceey"><code>@​veeceey</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2461">celery/kombu#2461</a></li>
<li>Cycle through host before calling errback by <a
href="https://github.com/arnaudmorin"><code>@​arnaudmorin</code></a> in
<a
href="https://redirect.github.com/celery/kombu/pull/2331">celery/kombu#2331</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2467">celery/kombu#2467</a></li>
<li>Allow enable_exactly_once_delivery for gcpubsub by <a
href="https://github.com/tungntpham"><code>@​tungntpham</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2431">celery/kombu#2431</a></li>
<li>feat(gcpubsub): optimize topic existence check by <a
href="https://github.com/haimjether"><code>@​haimjether</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2462">celery/kombu#2462</a></li>
<li>Fix active_queues to preserve queue ordering by <a
href="https://github.com/nairb774"><code>@​nairb774</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2464">celery/kombu#2464</a></li>
<li>Fix#2418 catch os error in eventio by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2471">celery/kombu#2471</a></li>
<li>Added support for SQS fanout via AWS SNS by <a
href="https://github.com/rlaunch"><code>@​rlaunch</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2372">celery/kombu#2372</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2472">celery/kombu#2472</a></li>
<li>Use compression.zstd (PEP-784) by <a
href="https://github.com/Rogdham"><code>@​Rogdham</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2395">celery/kombu#2395</a></li>
<li>Fix/2463 add gevent concurrent error to connection error by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2473">celery/kombu#2473</a></li>
<li>Bump backports-zstd from 1.0.0 to 1.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2474">celery/kombu#2474</a></li>
<li>Revert &quot;Fix/2463 add gevent concurrent error to connection
error&quot; by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2475">celery/kombu#2475</a></li>
<li>Fix/2463 gevent concurrent error by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2478">celery/kombu#2478</a></li>
<li>Bump backports-zstd from 1.1.0 to 1.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2477">celery/kombu#2477</a></li>
<li>Bump backports-zstd from 1.2.0 to 1.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2480">celery/kombu#2480</a></li>
<li>Fix for SQS transport deadlock by <a
href="https://github.com/rlaunch"><code>@​rlaunch</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2479">celery/kombu#2479</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2483">celery/kombu#2483</a></li>
<li>ChannelPromise: ensure the AttributeError does not appear in the
traceback when the contract raises an exception by <a
href="https://github.com/woutdenolf"><code>@​woutdenolf</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2486">celery/kombu#2486</a></li>
<li>Fix RabbitMQ 4.x crash: global QoS not supported on classic queues
by <a href="https://github.com/Azd325"><code>@​Azd325</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2481">celery/kombu#2481</a></li>
<li>Fix: SQS <code>polling_interval</code> transport option ignored in
async event loop <a
href="https://redirect.github.com/celery/kombu/issues/2439">#2439</a> by
<a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2489">celery/kombu#2489</a></li>
<li>Bump protobuf from 6.33.5 to 6.33.6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2494">celery/kombu#2494</a></li>
<li>Bump pytest-cov from 7.0.0 to 7.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2496">celery/kombu#2496</a></li>
<li>Support callable passwords for credential refresh on reconnect by <a
href="https://github.com/flamble"><code>@​flamble</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2476">celery/kombu#2476</a></li>
<li>fix(redis): prevent timer callbacks from crashing event loop on
connection error by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2498">celery/kombu#2498</a></li>
<li>Bump kazoo from 2.10.0 to 2.11.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2497">celery/kombu#2497</a></li>
<li>fix: gcpubsub transport crash when using Pub/Sub emulator by <a
href="https://github.com/NarendharManimohan"><code>@​NarendharManimohan</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2493">celery/kombu#2493</a></li>
<li>Bump pymongo from 4.15.3 to 4.16.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2453">celery/kombu#2453</a></li>
<li>Run pre-commit once, not twice by <a
href="https://github.com/cclauss"><code>@​cclauss</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2500">celery/kombu#2500</a></li>
<li>fix(redis): do not remove on_poll_start from on_tick on disconnect
by <a
href="https://github.com/antonio-mello-ai"><code>@​antonio-mello-ai</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2492">celery/kombu#2492</a></li>
<li>Bump codecov/codecov-action from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2501">celery/kombu#2501</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/celery/kombu/blob/main/Changelog.rst">kombu's
changelog</a>.</em></p>
<blockquote>
<h1>5.7.0</h1>
<p>:release-date: 03 November, 2026
:release-by: Asif Saif Uddin</p>
<p>What's Changed</p>
<pre><code>- fix(redis): keep an unacked message when its restore hits a
connection error ([#2767](celery/kombu#2767)).
- fix(sqs): avoid KeyError when a receive completes after basic_cancel
([#2772](celery/kombu#2772)).
- fix(redis): pause pending BRPOP polling while QoS is full
([#2776](celery/kombu#2776)).
- fix(asynchronous): close the HTTP client with the hub, and not reuse
it after Hub.reset()
([#2782](celery/kombu#2782)).
- fix(sqs): delete a message rejected without requeue
([#2784](celery/kombu#2784)).
- fix(sqlalchemy): raise when a published message cannot be stored
([#2793](celery/kombu#2793)).
- Update tzdata version constraint for Windows platform
([#2808](celery/kombu#2808)).
- fix(common): publish(retry=True) fails after a reconnect with a named
exchange ([#2797](celery/kombu#2797)).
- Update amqp version to 5.4.2
([#2810](celery/kombu#2810)).
- fix(sqlalchemy): raise when a purge cannot be committed
([#2811](celery/kombu#2811)).
<p>.. _version-5.7.0rc1:</p>
<h1>5.7.0rc1</h1>
<p>:release-date: 18 October, 2026
:release-by: Asif Saif Uddin</p>
<p>What's Changed
</code></pre></p>
<h2>Redis</h2>
<ul>
<li>Forward <code>disconnect()</code> keyword arguments and discard
closed idle
<code>BRPOP</code> connections (<a
href="https://redirect.github.com/celery/kombu/issues/2761">#2761</a>)</li>
<li>Discard <code>BRPOP</code> connections whose replies are overdue (<a
href="https://redirect.github.com/celery/kombu/issues/2757">#2757</a>)</li>
<li>Expire binding tables for expiring queues (<a
href="https://redirect.github.com/celery/kombu/issues/2732">#2732</a>)</li>
</ul>
<h2>SQLAlchemy</h2>
<ul>
<li>Use <code>BIGINT</code> IDs on MSSQL to prevent sequence overflow
(<a
href="https://redirect.github.com/celery/kombu/issues/2728">#2728</a>)</li>
<li>Count only pending messages when purging a queue (<a
href="https://redirect.github.com/celery/kombu/issues/2733">#2733</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li>Fix binary emergency state dumps (<a
href="https://redirect.github.com/celery/kombu/issues/2659">#2659</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/celery/kombu/commit/703e96f22fb7a9c8da9a560b8b01f8766e654265"><code>703e96f</code></a>
Bump version: 5.7.0rc1 → 5.7.0</li>
<li><a
href="https://github.com/celery/kombu/commit/d700961a600215f4971faef59f3c70c122f9098e"><code>d700961</code></a>
updated security supported version</li>
<li><a
href="https://github.com/celery/kombu/commit/a5d882d3a219dcab7791549517fcaa2ef4603d85"><code>a5d882d</code></a>
added changelog for v5.7.0 stable release</li>
<li><a
href="https://github.com/celery/kombu/commit/d6a185554b685701fe0c8e6a5fef0b2270ce04c3"><code>d6a1855</code></a>
chore(deps): Bump grpcio from 1.84.1 to 1.85.1</li>
<li><a
href="https://github.com/celery/kombu/commit/1c8beafb10678547a5cf67798c29c821666c4386"><code>1c8beaf</code></a>
fix(sqlalchemy): raise when a purge cannot be committed (<a
href="https://redirect.github.com/celery/kombu/issues/2811">#2811</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/ed1366ddb455269e79846a528a9fedfbe163a56d"><code>ed1366d</code></a>
Update amqp version to 5.4.2 (<a
href="https://redirect.github.com/celery/kombu/issues/2810">#2810</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/8c540f638fd2f2e5e395b76e08f9ee0fbdb0c91e"><code>8c540f6</code></a>
chore(deps): Bump azure-identity from 1.26.0 to 1.27.0 (<a
href="https://redirect.github.com/celery/kombu/issues/2809">#2809</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/da41469428594d1daf3ebc7421193fd60cdf2856"><code>da41469</code></a>
fix(common): publish(retry=True) fails after a reconnect with a named
exchang...</li>
<li><a
href="https://github.com/celery/kombu/commit/9e6277a706dfe8d710bab6ce250034c1fa4cd166"><code>9e6277a</code></a>
Update tzdata version constraint for Windows platform (<a
href="https://redirect.github.com/celery/kombu/issues/2808">#2808</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/b1905179e8921168713fedd9386c6f0f9a441e7f"><code>b190517</code></a>
fix(sqlalchemy): raise when a published message cannot be stored (<a
href="https://redirect.github.com/celery/kombu/issues/2793">#2793</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/celery/kombu/compare/v5.6.2...v5.7.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `openai` from 3.41.0 to 3.46.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-python/releases">openai's
releases</a>.</em></p>
<blockquote>
<h2>v3.46.0</h2>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.45.0...v3.46.0">3.46.0</a>
(2026-11-05)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add Australia, India, and Japan residency
options (<a
href="https://redirect.github.com/openai/openai-python/issues/4246">#4246</a>)
(<a
href="https://github.com/openai/openai-python/commit/2634b87c2f3d31960936cb0653e662356cd138a2">2634b87</a>)</li>
<li><strong>api:</strong> add GPT-6 Rosalind to the model catalog (<a
href="https://redirect.github.com/openai/openai-python/issues/4243">#4243</a>)
(<a
href="https://github.com/openai/openai-python/commit/0f8e5f382861120809b1d149a18c744f725746a0">0f8e5f3</a>)</li>
<li><strong>api:</strong> add image complexity and GIF and SVG output
controls (<a
href="https://redirect.github.com/openai/openai-python/issues/4247">#4247</a>)
(<a
href="https://github.com/openai/openai-python/commit/0152e3ada40e7580921aec71de2770ff02e69b05">0152e3a</a>)</li>
<li><strong>api:</strong> expand agent turn errors and image and audio
options (<a
href="https://redirect.github.com/openai/openai-python/issues/4245">#4245</a>)
(<a
href="https://github.com/openai/openai-python/commit/1b2fb74d1ac88eca798a00d3e5c0789ab9e42833">1b2fb74</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>deps:</strong> bump github/codeql-action/init from 4.39.0 to
4.39.1 (<a
href="https://redirect.github.com/openai/openai-python/issues/4230">#4230</a>)
(<a
href="https://github.com/openai/openai-python/commit/c9fe3355fd43084df817543d0d7bd5bc72065c0f">c9fe335</a>)</li>
</ul>
<h2>v3.45.0</h2>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.44.0...v3.45.0">3.45.0</a>
(2026-11-03)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add 12-hour Responses caching and cache-write
usage (<a
href="https://redirect.github.com/openai/openai-python/issues/4240">#4240</a>)
(<a
href="https://github.com/openai/openai-python/commit/5f717b537b7c230e2a38d0cebb0d5ccc8f97d00b">5f717b5</a>)</li>
<li><strong>api:</strong> add project service tier settings (<a
href="https://redirect.github.com/openai/openai-python/issues/4239">#4239</a>)
(<a
href="https://github.com/openai/openai-python/commit/1a2a3d02247f9eaf0614bae9d35c60cbddf1d460">1a2a3d0</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>clarify generated-file ownership (<a
href="https://redirect.github.com/openai/openai-python/issues/4241">#4241</a>)
(<a
href="https://github.com/openai/openai-python/commit/0309a8c10cb0ddda39b40592455e76847b78cf64">0309a8c</a>)</li>
</ul>
<h2>v3.44.0</h2>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.43.0...v3.44.0">3.44.0</a>
(2026-11-03)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add workload identity providers and federation
rules (<a
href="https://redirect.github.com/openai/openai-python/issues/4237">#4237</a>)
(<a
href="https://github.com/openai/openai-python/commit/12709d708ad03291d8a81371a55a4dadfbcce31d">12709d7</a>)</li>
</ul>
<h2>v3.43.0</h2>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.42.1...v3.43.0">3.43.0</a>
(2026-11-03)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> expand Live Responses delegation tools (<a
href="https://redirect.github.com/openai/openai-python/issues/4233">#4233</a>)
(<a
href="https://github.com/openai/openai-python/commit/f6e8480f9a5b2a4d02b17a1da54a1e57964bc312">f6e8480</a>)</li>
<li><strong>responses:</strong> accumulate rich WebSocket progress (<a
href="https://redirect.github.com/openai/openai-python/issues/4224">#4224</a>)
(<a
href="https://github.com/openai/openai-python/commit/48cdad3a61321cf9a27834b818c6d1fcfe651138">48cdad3</a>)</li>
<li><strong>responses:</strong> add WebSocket lane overflow isolation
(<a
href="https://redirect.github.com/openai/openai-python/issues/4225">#4225</a>)
(<a
href="https://github.com/openai/openai-python/commit/16bdad17364b62254e14f52f834d15cf1036a024">16bdad1</a>)</li>
</ul>
<h3>Chores</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-python/blob/main/CHANGELOG.md">openai's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.45.0...v3.46.0">3.46.0</a>
(2026-11-05)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add Australia, India, and Japan residency
options (<a
href="https://redirect.github.com/openai/openai-python/issues/4246">#4246</a>)
(<a
href="https://github.com/openai/openai-python/commit/2634b87c2f3d31960936cb0653e662356cd138a2">2634b87</a>)</li>
<li><strong>api:</strong> add GPT-6 Rosalind to the model catalog (<a
href="https://redirect.github.com/openai/openai-python/issues/4243">#4243</a>)
(<a
href="https://github.com/openai/openai-python/commit/0f8e5f382861120809b1d149a18c744f725746a0">0f8e5f3</a>)</li>
<li><strong>api:</strong> add image complexity and GIF and SVG output
controls (<a
href="https://redirect.github.com/openai/openai-python/issues/4247">#4247</a>)
(<a
href="https://github.com/openai/openai-python/commit/0152e3ada40e7580921aec71de2770ff02e69b05">0152e3a</a>)</li>
<li><strong>api:</strong> expand agent turn errors and image and audio
options (<a
href="https://redirect.github.com/openai/openai-python/issues/4245">#4245</a>)
(<a
href="https://github.com/openai/openai-python/commit/1b2fb74d1ac88eca798a00d3e5c0789ab9e42833">1b2fb74</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>deps:</strong> bump github/codeql-action/init from 4.39.0 to
4.39.1 (<a
href="https://redirect.github.com/openai/openai-python/issues/4230">#4230</a>)
(<a
href="https://github.com/openai/openai-python/commit/c9fe3355fd43084df817543d0d7bd5bc72065c0f">c9fe335</a>)</li>
</ul>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.44.0...v3.45.0">3.45.0</a>
(2026-11-03)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add 12-hour Responses caching and cache-write
usage (<a
href="https://redirect.github.com/openai/openai-python/issues/4240">#4240</a>)
(<a
href="https://github.com/openai/openai-python/commit/5f717b537b7c230e2a38d0cebb0d5ccc8f97d00b">5f717b5</a>)</li>
<li><strong>api:</strong> add project service tier settings (<a
href="https://redirect.github.com/openai/openai-python/issues/4239">#4239</a>)
(<a
href="https://github.com/openai/openai-python/commit/1a2a3d02247f9eaf0614bae9d35c60cbddf1d460">1a2a3d0</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>clarify generated-file ownership (<a
href="https://redirect.github.com/openai/openai-python/issues/4241">#4241</a>)
(<a
href="https://github.com/openai/openai-python/commit/0309a8c10cb0ddda39b40592455e76847b78cf64">0309a8c</a>)</li>
</ul>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.43.0...v3.44.0">3.44.0</a>
(2026-11-03)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add workload identity providers and federation
rules (<a
href="https://redirect.github.com/openai/openai-python/issues/4237">#4237</a>)
(<a
href="https://github.com/openai/openai-python/commit/12709d708ad03291d8a81371a55a4dadfbcce31d">12709d7</a>)</li>
</ul>
<h2><a
href="https://github.com/openai/openai-python/compare/v3.42.1...v3.43.0">3.43.0</a>
(2026-11-03)</h2>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> expand Live Responses delegation tools (<a
href="https://redirect.github.com/openai/openai-python/issues/4233">#4233</a>)
(<a
href="https://github.com/openai/openai-python/commit/f6e8480f9a5b2a4d02b17a1da54a1e57964bc312">f6e8480</a>)</li>
<li><strong>responses:</strong> accumulate rich WebSocket progress (<a
href="https://redirect.github.com/openai/openai-python/issues/4224">#4224</a>)
(<a
href="https://github.com/openai/openai-python/commit/48cdad3a61321cf9a27834b818c6d1fcfe651138">48cdad3</a>)</li>
<li><strong>responses:</strong> add WebSocket lane overflow isolation
(<a
href="https://redirect.github.com/openai/openai-python/issues/4225">#4225</a>)
(<a
href="https://github.com/openai/openai-python/commit/16bdad17364b62254e14f52f834d15cf1036a024">16bdad1</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>deps:</strong> bump actions/setup-node from 4.4.0 to 7.1.0
(<a
href="https://redirect.github.com/openai/openai-python/issues/4229">#4229</a>)
(<a
href="https://github.com/openai/openai-python/commit/abbfb27aec2a660569d0570263d622877af64087">abbfb27</a>)</li>
<li><strong>deps:</strong> bump actions/setup-python from 7.0.0 to 7.1.0
(<a
href="https://redirect.github.com/openai/openai-python/issues/4232">#4232</a>)
(<a
href="https://github.com/openai/openai-python/commit/49f9a596ead681644a76a54992fc10e9b87a95b0">49f9a59</a>)</li>
<li><strong>deps:</strong> bump pypa/gh-action-pypi-publish from 1.14.2
to 1.14.3 (<a
href="https://redirect.github.com/openai/openai-python/issues/4228">#4228</a>)
(<a
href="https://github.com/openai/openai-python/commit/f43f29b5f7db37579becc2dad83f5054ef59ed6f">f43f29b</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/openai/openai-python/commit/ea5d1606f441d80dca1e9e7f99b74581f41408f8"><code>ea5d160</code></a>
release: 3.46.0 (<a
href="https://redirect.github.com/openai/openai-python/issues/4244">#4244</a>)</li>
<li><a
href="https://github.com/openai/openai-python/commit/0152e3ada40e7580921aec71de2770ff02e69b05"><code>0152e3a</code></a>
feat(api): add image complexity and GIF and SVG output controls (<a
href="https://redirect.github.com/openai/openai-python/issues/4247">#4247</a>)</li>
<li><a
href="https://github.com/openai/openai-python/commit/2634b87c2f3d31960936cb0653e662356cd138a2"><code>2634b87</code></a>
feat(api): add Australia, India, and Japan residency options (<a
href="https://redirect.github.com/openai/openai-python/issues/4246">#4246</a>)</li>
<li><a
href="https://github.com/openai/openai-python/commit/b4aee4c1d5527a3d0d77940f35f6f79b2a272e70"><code>b4aee4c</code></a>
chore(deps): bump the python-maintenance group across 1 directory with
11 upd...</li>
<li><a
href="https://github.com/openai/openai-python/commit/c9fe3355fd43084df817543d0d7bd5bc72065c0f"><code>c9fe335</code></a>
chore(deps): bump github/codeql-action/init from 4.39.0 to 4.39.1 (<a
href="https://redirect.github.com/openai/openai-python/issues/4230">#4230</a>)</li>
<li><a
href="https://github.com/openai/openai-python/commit/d59f414417b977ef20d7a78f398b153dac32216e"><code>d59f414</code></a>
chore(deps): update aiohttp, multidict, PyJWT, and required yarl
security flo...</li>
<li><a
href="https://github.com/openai/openai-python/commit/1b2fb74d1ac88eca798a00d3e5c0789ab9e42833"><code>1b2fb74</code></a>
feat(api): expand agent turn errors and image and audio options (<a
href="https://redirect.github.com/openai/openai-python/issues/4245">#4245</a>)</li>
<li><a
href="https://github.com/openai/openai-python/commit/0f8e5f382861120809b1d149a18c744f725746a0"><code>0f8e5f3</code></a>
feat(api): add GPT-6 Rosalind to the model catalog (<a
href="https://redirect.github.com/openai/openai-python/issues/4243">#4243</a>)</li>
<li><a
href="https://github.com/openai/openai-python/commit/9b3458a2ef563493111a0a4265d4e9e7e14fe840"><code>9b3458a</code></a>
release: 3.45.0 (<a
href="https://redirect.github.com/openai/openai-python/issues/4242">#4242</a>)</li>
<li><a
href="https://github.com/openai/openai-python/commit/0309a8c10cb0ddda39b40592455e76847b78cf64"><code>0309a8c</code></a>
docs: clarify generated-file ownership (<a
href="https://redirect.github.com/openai/openai-python/issues/4241">#4241</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/openai/openai-python/compare/v3.41.0...v3.46.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>
Siddharthk17 added a commit to Siddharthk17/PipelineIQ that referenced this pull request Nov 10, 2026
…dates (#40)

Bumps the celery-stack group with 2 updates in the /backend directory:
[celery](https://github.com/celery/celery) and
[kombu](https://github.com/celery/kombu).

Updates `celery` from 5.6.3 to 5.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/celery/celery/releases">celery's
releases</a>.</em></p>
<blockquote>
<h2>v5.7.0</h2>
<h1>Celery 5.7.0</h1>
<p>We're pleased to announce <strong>Celery 5.7.0</strong>, a new stable
release of Celery.</p>
<p>This release brings substantial improvements to task workflows,
worker reliability, result handling, scheduling, and broker
connectivity. It also includes new integrations, improved Python
compatibility, performance optimizations, and a large number of bug
fixes contributed by the community.</p>
<p>A significant part of this release focuses on making complex Canvas
workflows more reliable and efficient, improving worker behavior during
broker disconnections and shutdown, and making result-backend state
handling more consistent.</p>
<h2>Highlights</h2>
<ul>
<li><strong>More reliable Canvas workflows:</strong> Improved chains,
groups, chords, nested workflows, callbacks, errbacks, and failure
propagation. Several fixes also reduce unnecessary message growth in
complex chains and chords.</li>
<li><strong>Improved worker reliability:</strong> Better connection
recovery, graceful shutdown, prefork process management, autoscaling,
and handling of worker-process loss.</li>
<li><strong>More predictable task results:</strong> Improved
result-state consistency, retry handling, <code>ignore_result</code>
behavior, and concurrent <code>AsyncResult</code> tracking.</li>
<li><strong>Timezone and scheduling improvements:</strong> More reliable
ETA, countdown, expiration, crontab, solar schedules, and Celery Beat
behavior across daylight-saving-time transitions.</li>
<li><strong>New Pydantic integration behavior:</strong> Tasks configured
with <code>pydantic=True</code> can accept Pydantic model
instances.</li>
<li><strong>New pymemcache result backend support:</strong> Adds support
for using <code>pymemcache</code> as a result backend.</li>
<li><strong>Improved Redis result backend:</strong> New expiration
settings for chord and failure results, improved Pub/Sub handling, and
more reliable chord accounting.</li>
<li><strong>Better Python compatibility:</strong> Python 3.10 is now the
minimum supported version, with compatibility work for newer Python
versions, including Python 3.14.</li>
<li><strong>Improved worker operations:</strong> Cgroup-aware automatic
concurrency detection and additional worker-management
improvements.</li>
</ul>
<h2>What's New</h2>
<h3>Canvas, Chains, Groups, and Chords</h3>
<p>Celery 5.7 includes extensive improvements to Canvas execution and
composition, particularly for nested workflows and complex chains and
chords.</p>
<ul>
<li>Fixed failure propagation through chained tasks into chord
bodies.</li>
<li>Improved chord failure handling when a chord header or a chained
chord fails.</li>
<li>Fixed chord error handling when the chord body is itself a
chain.</li>
<li>Improved handling of empty groups and chains, including empty groups
inside chains and group headers.</li>
<li>Chains are now constructed in a single pass instead of repeatedly
folding signatures with the <code>|</code> operator.</li>
<li>Reduced unnecessary message growth in chains of chords, chains of
groups, implicit chords, and standalone chord bodies.</li>
<li>Improved nested group handling and preservation of group IDs.</li>
<li>Fixed duplicate nodes in <code>GroupResult.as_tuple()</code> after
groups in chains.</li>
<li>Improved <code>GroupResult</code> fan-out behavior in chains.</li>
<li>Fixed eager execution behavior for chains containing
<code>Ignore</code> or <code>Reject</code>.</li>
<li>Avoided unnecessary result-backend access when eagerly applying
groups inside chains.</li>
<li>Improved task replacement with chains containing groups, including
cases that previously could hang.</li>
<li>Improved callback execution when a task is replaced by a chain,
ensuring callbacks are not invoked repeatedly.</li>
<li>Fixed eager-chain callback behavior so that chain links are
dispatched once at the appropriate point.</li>
<li>Improved propagation of task options, ETA, and countdown values to
chord headers.</li>
<li>Corrected the handling of <code>link</code> and
<code>link_error</code> options on chords so they are applied to the
chord body.</li>
<li>Improved errback argument classification and handling of new-style
errback calls.</li>
<li>Preserved group errback mutability and improved stamped-header
merging and revocation.</li>
<li>Improved signature cloning and option isolation, preventing cloned
signatures from sharing mutable keyword arguments with their
originals.</li>
<li>Fixed argument forwarding through nested chains during eager
execution.</li>
<li>Improved <code>map</code> and <code>starmap</code> option
merging.</li>
</ul>
<p>These changes make complex Canvas compositions more predictable and
reduce unnecessary broker traffic and message growth.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/celery/celery/blob/main/Changelog.rst">celery's
changelog</a>.</em></p>
<blockquote>
<h1>5.7.0</h1>
<p>:release-date: 2026-11-05
:release-by: Asif Saif Uddin</p>
<p>Celery v5.7.0 Stable Release is now available for testing and deploy
to production.
Please help us test this version and report any issues.</p>
<h1>What's Changed Since 5.7.0rc1</h1>
<p>This section summarizes the changes made since the Celery 5.7.0rc1
pre-release.</p>
<h2>Canvas, Chains, Groups, and Chords</h2>
<ul>
<li>Run a replaced task's callbacks once when it is replaced with a
chain (<code>:ghpull:</code>10927`).</li>
<li>Fix chord link and link-error options so they are passed to the body
only (<code>:ghpull:</code>10778`).</li>
<li>Fix stamped header revocation (<code>:ghpull:</code>10884`).</li>
<li>Count each chord header task only once in the Redis backend
(<code>:ghpull:</code>10919`).</li>
<li>Fix Redis chord claim cleanup ownership
(<code>:ghpull:</code>10998`).</li>
<li>Fail the chord when <code>chord_unlock</code> retry is refused by
the broker (<code>:ghpull:</code>10959`).</li>
</ul>
<h2>Task Execution and Result Handling</h2>
<ul>
<li>Fix retry argument conflicts when switching calling conventions
(<code>:ghpull:</code>10895`).</li>
<li>Pass values to backend hooks by position again
(<code>:ghpull:</code>10918`).</li>
<li>Don't mark a task <code>REVOKED</code> while another worker is
running it (<code>:ghpull:</code>10922`).</li>
<li>Keep the first <code>SUCCESS</code> in the database, MongoDB, and
Cassandra backends (<code>:ghpull:</code>10920<code>,
:ghpull:</code>10944<code>, :ghpull:</code>10945`).</li>
<li>Don't record <code>FAILURE</code> when <code>on_success</code>
raises after <code>SUCCESS</code> was stored
(<code>:ghpull:</code>10759`).</li>
<li>Don't fail a task whose <code>SUCCESS</code> was stored before the
worker was lost (<code>:ghpull:</code>10752`).</li>
<li>Fix a worker hang in <code>WorkerLostError</code> when
<code>result_backend_always_retry=True</code>
(<code>:ghpull:</code>10960`).</li>
<li>Fix <code>send_task()</code> overriding <code>ignore_result</code>
defaults (<code>:ghpull:</code>10953`).</li>
<li>Preserve <code>ignore_result</code> overrides across task retries
(<code>:ghpull:</code>10958`).</li>
<li>Make <code>Task.apply()</code> respect the
<code>task.ignore_result</code> default
(<code>:ghpull:</code>11001`).</li>
<li>Don't store <code>RETRY</code> for an ignored result when retrying
after a lost worker (<code>:ghpull:</code>11009`).</li>
<li>Track every <code>AsyncResult</code> waiting on a task ID
(<code>:ghpull:</code>10956`).</li>
<li>Allow <code>ResultSet.add()</code> after the set's results are ready
(<code>:ghpull:</code>10930`).</li>
<li>Use the documented retry defaults in the database backend
(<code>:ghpull:</code>10921`).</li>
<li>Fix Manager warning output during retries
(<code>:ghpull:</code>10948`).</li>
<li>Wait between retries when the broker refuses a callback publish
(<code>:ghpull:</code>10975`).</li>
<li>Merge signature options in <code>map</code> and <code>starmap</code>
<code>apply_async()</code> (<code>:ghpull:</code>10787`).</li>
<li>Stop gating task publishing signals on cached receiver lists
(<code>:ghpull:</code>10791`).</li>
</ul>
<h2>Worker Operations</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/celery/celery/commit/6fcdbf904d410749ad7676d8ff6b1b25d6e19675"><code>6fcdbf9</code></a>
Bump version: 5.7.0rc1 → 5.7.0 (<a
href="https://redirect.github.com/celery/celery/issues/11025">#11025</a>)</li>
<li><a
href="https://github.com/celery/celery/commit/4a1d6f42ff6e220050875dd83367815fa33f4c59"><code>4a1d6f4</code></a>
Make beat's pidbox stop test tolerate slow runners (<a
href="https://redirect.github.com/celery/celery/issues/11024">#11024</a>)</li>
<li><a
href="https://github.com/celery/celery/commit/6a80d471983d40fa65c78baf006885062b546132"><code>6a80d47</code></a>
Added changelog and new features for celery v5.7.0 stable version (<a
href="https://redirect.github.com/celery/celery/issues/11016">#11016</a>)</li>
<li><a
href="https://github.com/celery/celery/commit/6b67b23b0b784d62809152b5ac2f7acf7def8297"><code>6b67b23</code></a>
Fix dead Akismet and vine zipball links in the docs (<a
href="https://redirect.github.com/celery/celery/issues/11021">#11021</a>)</li>
<li><a
href="https://github.com/celery/celery/commit/e82fa93f539bc2eb0237417382fad02f42452532"><code>e82fa93</code></a>
Chore(deps): Bump azure-identity from 1.26.0 to 1.27.0</li>
<li><a
href="https://github.com/celery/celery/commit/2fe0ead077408eae9c1ff883b9d995792fbc0170"><code>2fe0ead</code></a>
Chore(deps): Bump google-cloud-storage from 3.15.0 to 3.17.1 (<a
href="https://redirect.github.com/celery/celery/issues/11013">#11013</a>)</li>
<li><a
href="https://github.com/celery/celery/commit/89ce90041834e0624aed7623f098dc59ef91c7a5"><code>89ce900</code></a>
Fix#10997 - redis chord claim cleanup ownership (<a
href="https://redirect.github.com/celery/celery/issues/10998">#10998</a>)</li>
<li><a
href="https://github.com/celery/celery/commit/5d83c46ebb3f7183998f55fa2e5af0ad0038b278"><code>5d83c46</code></a>
Don't store RETRY for an ignored result when retrying after a lost
worker (<a
href="https://redirect.github.com/celery/celery/issues/1">#1</a>...</li>
<li><a
href="https://github.com/celery/celery/commit/1f435e5c718c8485143910d67b40eb164fd9f567"><code>1f435e5</code></a>
Use Cuba's 2025 fall-back in the midnight DST tests</li>
<li><a
href="https://github.com/celery/celery/commit/98b7ba94a17239ff4c44ed59a10a1b09a68f81db"><code>98b7ba9</code></a>
Update kombu version to 5.7.0 (<a
href="https://redirect.github.com/celery/celery/issues/11007">#11007</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/celery/celery/compare/v5.6.3...v5.7.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `kombu` from 5.6.2 to 5.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/celery/kombu/releases">kombu's
releases</a>.</em></p>
<blockquote>
<h2>v5.7.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add missing reprkwargs export to utils module by <a
href="https://github.com/oliverhaas"><code>@​oliverhaas</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2436">celery/kombu#2436</a></li>
<li>Remove Python 3.9 from CI workflow by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2448">celery/kombu#2448</a></li>
<li>Update Python and OS version in Read the Docs config by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2450">celery/kombu#2450</a></li>
<li>Update redis requirement from !=4.5.5,!=5.0.2,&lt;6.5,&gt;=4.5.2 to
&gt;=4.5.2,!=4.5.5,!=5.0.2,&lt;7.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2398">celery/kombu#2398</a></li>
<li>Update Python versions in tox.ini configuration by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2449">celery/kombu#2449</a></li>
<li>Bump pymongo from 4.10.1 to 4.15.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2386">celery/kombu#2386</a></li>
<li>Bump pytest from 8.4.2 to 9.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2438">celery/kombu#2438</a></li>
<li>Bump protobuf from 6.32.1 to 6.33.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2428">celery/kombu#2428</a></li>
<li>Bump protobuf from 6.33.2 to 6.33.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2452">celery/kombu#2452</a></li>
<li>Bump grpcio from 1.75.1 to 1.76.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2397">celery/kombu#2397</a></li>
<li>Revert &quot;Bump grpcio from 1.75.1 to 1.76.0&quot; by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2454">celery/kombu#2454</a></li>
<li>Update grpcio version to 1.76.0 by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2455">celery/kombu#2455</a></li>
<li>Remove invalid Python version from workflow by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2459">celery/kombu#2459</a></li>
<li>Update pypy to 3.11 by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2328">celery/kombu#2328</a></li>
<li>Update Python versions in tox.ini by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2460">celery/kombu#2460</a></li>
<li>Add support for fair queue in SQS by <a
href="https://github.com/MartinSiby"><code>@​MartinSiby</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2342">celery/kombu#2342</a></li>
<li>Support redis queue expiration by <a
href="https://github.com/ffje"><code>@​ffje</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2251">celery/kombu#2251</a></li>
<li>Fix Logwrapped not supporting context manager protocol by <a
href="https://github.com/veeceey"><code>@​veeceey</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2461">celery/kombu#2461</a></li>
<li>Cycle through host before calling errback by <a
href="https://github.com/arnaudmorin"><code>@​arnaudmorin</code></a> in
<a
href="https://redirect.github.com/celery/kombu/pull/2331">celery/kombu#2331</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2467">celery/kombu#2467</a></li>
<li>Allow enable_exactly_once_delivery for gcpubsub by <a
href="https://github.com/tungntpham"><code>@​tungntpham</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2431">celery/kombu#2431</a></li>
<li>feat(gcpubsub): optimize topic existence check by <a
href="https://github.com/haimjether"><code>@​haimjether</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2462">celery/kombu#2462</a></li>
<li>Fix active_queues to preserve queue ordering by <a
href="https://github.com/nairb774"><code>@​nairb774</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2464">celery/kombu#2464</a></li>
<li>Fix#2418 catch os error in eventio by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2471">celery/kombu#2471</a></li>
<li>Added support for SQS fanout via AWS SNS by <a
href="https://github.com/rlaunch"><code>@​rlaunch</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2372">celery/kombu#2372</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2472">celery/kombu#2472</a></li>
<li>Use compression.zstd (PEP-784) by <a
href="https://github.com/Rogdham"><code>@​Rogdham</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2395">celery/kombu#2395</a></li>
<li>Fix/2463 add gevent concurrent error to connection error by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2473">celery/kombu#2473</a></li>
<li>Bump backports-zstd from 1.0.0 to 1.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2474">celery/kombu#2474</a></li>
<li>Revert &quot;Fix/2463 add gevent concurrent error to connection
error&quot; by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2475">celery/kombu#2475</a></li>
<li>Fix/2463 gevent concurrent error by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2478">celery/kombu#2478</a></li>
<li>Bump backports-zstd from 1.1.0 to 1.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2477">celery/kombu#2477</a></li>
<li>Bump backports-zstd from 1.2.0 to 1.3.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2480">celery/kombu#2480</a></li>
<li>Fix for SQS transport deadlock by <a
href="https://github.com/rlaunch"><code>@​rlaunch</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2479">celery/kombu#2479</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2483">celery/kombu#2483</a></li>
<li>ChannelPromise: ensure the AttributeError does not appear in the
traceback when the contract raises an exception by <a
href="https://github.com/woutdenolf"><code>@​woutdenolf</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2486">celery/kombu#2486</a></li>
<li>Fix RabbitMQ 4.x crash: global QoS not supported on classic queues
by <a href="https://github.com/Azd325"><code>@​Azd325</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2481">celery/kombu#2481</a></li>
<li>Fix: SQS <code>polling_interval</code> transport option ignored in
async event loop <a
href="https://redirect.github.com/celery/kombu/issues/2439">#2439</a> by
<a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2489">celery/kombu#2489</a></li>
<li>Bump protobuf from 6.33.5 to 6.33.6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2494">celery/kombu#2494</a></li>
<li>Bump pytest-cov from 7.0.0 to 7.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2496">celery/kombu#2496</a></li>
<li>Support callable passwords for credential refresh on reconnect by <a
href="https://github.com/flamble"><code>@​flamble</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2476">celery/kombu#2476</a></li>
<li>fix(redis): prevent timer callbacks from crashing event loop on
connection error by <a
href="https://github.com/ChickenBenny"><code>@​ChickenBenny</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2498">celery/kombu#2498</a></li>
<li>Bump kazoo from 2.10.0 to 2.11.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2497">celery/kombu#2497</a></li>
<li>fix: gcpubsub transport crash when using Pub/Sub emulator by <a
href="https://github.com/NarendharManimohan"><code>@​NarendharManimohan</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2493">celery/kombu#2493</a></li>
<li>Bump pymongo from 4.15.3 to 4.16.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2453">celery/kombu#2453</a></li>
<li>Run pre-commit once, not twice by <a
href="https://github.com/cclauss"><code>@​cclauss</code></a> in <a
href="https://redirect.github.com/celery/kombu/pull/2500">celery/kombu#2500</a></li>
<li>fix(redis): do not remove on_poll_start from on_tick on disconnect
by <a
href="https://github.com/antonio-mello-ai"><code>@​antonio-mello-ai</code></a>
in <a
href="https://redirect.github.com/celery/kombu/pull/2492">celery/kombu#2492</a></li>
<li>Bump codecov/codecov-action from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/celery/kombu/pull/2501">celery/kombu#2501</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/celery/kombu/blob/main/Changelog.rst">kombu's
changelog</a>.</em></p>
<blockquote>
<h1>5.7.0</h1>
<p>:release-date: 03 November, 2026
:release-by: Asif Saif Uddin</p>
<p>What's Changed</p>
<pre><code>- fix(redis): keep an unacked message when its restore hits a
connection error ([#2767](celery/kombu#2767)).
- fix(sqs): avoid KeyError when a receive completes after basic_cancel
([#2772](celery/kombu#2772)).
- fix(redis): pause pending BRPOP polling while QoS is full
([#2776](celery/kombu#2776)).
- fix(asynchronous): close the HTTP client with the hub, and not reuse
it after Hub.reset()
([#2782](celery/kombu#2782)).
- fix(sqs): delete a message rejected without requeue
([#2784](celery/kombu#2784)).
- fix(sqlalchemy): raise when a published message cannot be stored
([#2793](celery/kombu#2793)).
- Update tzdata version constraint for Windows platform
([#2808](celery/kombu#2808)).
- fix(common): publish(retry=True) fails after a reconnect with a named
exchange ([#2797](celery/kombu#2797)).
- Update amqp version to 5.4.2
([#2810](celery/kombu#2810)).
- fix(sqlalchemy): raise when a purge cannot be committed
([#2811](celery/kombu#2811)).
<p>.. _version-5.7.0rc1:</p>
<h1>5.7.0rc1</h1>
<p>:release-date: 18 October, 2026
:release-by: Asif Saif Uddin</p>
<p>What's Changed
</code></pre></p>
<h2>Redis</h2>
<ul>
<li>Forward <code>disconnect()</code> keyword arguments and discard
closed idle
<code>BRPOP</code> connections (<a
href="https://redirect.github.com/celery/kombu/issues/2761">#2761</a>)</li>
<li>Discard <code>BRPOP</code> connections whose replies are overdue (<a
href="https://redirect.github.com/celery/kombu/issues/2757">#2757</a>)</li>
<li>Expire binding tables for expiring queues (<a
href="https://redirect.github.com/celery/kombu/issues/2732">#2732</a>)</li>
</ul>
<h2>SQLAlchemy</h2>
<ul>
<li>Use <code>BIGINT</code> IDs on MSSQL to prevent sequence overflow
(<a
href="https://redirect.github.com/celery/kombu/issues/2728">#2728</a>)</li>
<li>Count only pending messages when purging a queue (<a
href="https://redirect.github.com/celery/kombu/issues/2733">#2733</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li>Fix binary emergency state dumps (<a
href="https://redirect.github.com/celery/kombu/issues/2659">#2659</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/celery/kombu/commit/703e96f22fb7a9c8da9a560b8b01f8766e654265"><code>703e96f</code></a>
Bump version: 5.7.0rc1 → 5.7.0</li>
<li><a
href="https://github.com/celery/kombu/commit/d700961a600215f4971faef59f3c70c122f9098e"><code>d700961</code></a>
updated security supported version</li>
<li><a
href="https://github.com/celery/kombu/commit/a5d882d3a219dcab7791549517fcaa2ef4603d85"><code>a5d882d</code></a>
added changelog for v5.7.0 stable release</li>
<li><a
href="https://github.com/celery/kombu/commit/d6a185554b685701fe0c8e6a5fef0b2270ce04c3"><code>d6a1855</code></a>
chore(deps): Bump grpcio from 1.84.1 to 1.85.1</li>
<li><a
href="https://github.com/celery/kombu/commit/1c8beafb10678547a5cf67798c29c821666c4386"><code>1c8beaf</code></a>
fix(sqlalchemy): raise when a purge cannot be committed (<a
href="https://redirect.github.com/celery/kombu/issues/2811">#2811</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/ed1366ddb455269e79846a528a9fedfbe163a56d"><code>ed1366d</code></a>
Update amqp version to 5.4.2 (<a
href="https://redirect.github.com/celery/kombu/issues/2810">#2810</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/8c540f638fd2f2e5e395b76e08f9ee0fbdb0c91e"><code>8c540f6</code></a>
chore(deps): Bump azure-identity from 1.26.0 to 1.27.0 (<a
href="https://redirect.github.com/celery/kombu/issues/2809">#2809</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/da41469428594d1daf3ebc7421193fd60cdf2856"><code>da41469</code></a>
fix(common): publish(retry=True) fails after a reconnect with a named
exchang...</li>
<li><a
href="https://github.com/celery/kombu/commit/9e6277a706dfe8d710bab6ce250034c1fa4cd166"><code>9e6277a</code></a>
Update tzdata version constraint for Windows platform (<a
href="https://redirect.github.com/celery/kombu/issues/2808">#2808</a>)</li>
<li><a
href="https://github.com/celery/kombu/commit/b1905179e8921168713fedd9386c6f0f9a441e7f"><code>b190517</code></a>
fix(sqlalchemy): raise when a published message cannot be stored (<a
href="https://redirect.github.com/celery/kombu/issues/2793">#2793</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/celery/kombu/compare/v5.6.2...v5.7.0">compare
view</a></li>
</ul>
</details>
<br />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants