* Fix for the issue #1172
* Unit test for the fix relating to the issue #1172
* Fix for issue #1198: Celery crashes in cases where there aren’t enough available workers to start acting on “in-flight” messages in the SQS queue
* Fix for issue #1198: fixed lint issues
* Fix for issue #1198: added unit tests
Co-authored-by: inauros <inauros@copyright.com>
* Add support for health_check_interval option in broker_transport_options. #1114
* Added Keivn Fox to authors.
* Do not use default arg for pop() method.
* Add dedicated test case for configurable health_check
* Add test case for when health_check_interval is not supported by connection_class in redis.
* Fix Flake8
* Added more test cases for redis.
* Updated tests.
* Add missing parameter queue_args in kombu.connection.SimpleBuffer
`queue_args` parameter was introduced in `kombu.simple.SimpleQueue`
class and at the same time in `kombu.connection.SimpleQueue` method.
However, `kombu.connection.SimpleBuffer` was not updated in the
same way.
As `kombu.connection.SimpleBuffer` is using positional arguments to
create a `kombu.simple.SimpleBuffer` object, `exchange_opts` value in
that instance would be None and `queue_args` is going to bet set with
the expected `exchange_opts` value.
* Add tests for SimpleBuffer and SimpleQueue
- Add tests for SimpleBuffer/SimpleQueue methods in kombu.simple module
- Add tests for SimpleQueue and SimpleBuffer tasks in kombu.connection
The root cause of the issue is that the connection
can be erased during an execution of self._receive_one(c).
So c.connection should be checked before every iteration,
not only before the first one.
* issue-1087 Revert _lookup api and correct redis implemetnation. Update variable naming to be self documenting and more readable by non native speakers. Major overhaul of redis test cases by adding more full featured fakeredis module.
* Add more test cases to boost coverage of kombu redis transport.
* Refactor the producer consumer test cases to be based on original mocks and be passing
* Fix lingering line length issue in test.
* Make sure that max_retries=0 is treated differently than None
When max_retries=0, it should not retry at all instead of retrying infinitely.
* retry_always should use max_retries=None instead of 0.
* Added test for zero retries
* Removed Offending spaces from blank line
* Fixing MongoDB backend to work properly with TTL
Bumping pymongo version to 3.8.0
* Updating authors
* Adding dependencies to travis config
* Fixing travis test cases
* Changing pymongo version to align with mongo result backend
* Factor out the binding of channel to entity into a method that can be shared and does not use assert.
* do not use assertion in production because it can be stripped in optimize and is best left for unit tests.
* dont reassign entity here because it breaks a bunch of tests.
* fix pydoc complaints
* Add TDD style test that fails in master and passes in my branch
* finish refactor of existing maybe_declare tests to use shared fixtures
* py2/py3 print difference means skip printing.
* fix pep8 line length
Prior to this change, one needed to specify a URL using a URI
identifier, e.g., `pyamqp://foo.bar`. This change makes it so calling
`.switch(..)` again results in switching the host, not switching the
resource identifier.
This simplifies setting up connections with just hostnames specifying
the resource identifier once, separately.
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
* Add events field on memory channel
Part of https://github.com/celery/kombu/issues/1050, with this fix
the function does not raise the exception.
The init `defaultdict(set)` is the same init from amqp lib.
* Add unit test
* Add more detail test
* FIx flake8
* Add `_lookup_direct` method to virtual channel. (#994)
Add possibility to optimize lookup for queue in direct
exchange set.
* Add `_lookup_direct` method to redis virtual channel. (#994)
Use `SISMEMBER` instead of `SMEMBERS` command to check if queue
exists in a set. Time complexity is increased from O(N) to O(1)
where N is the set cardinality.
This is a follow-up to ddba8aeaf0. Prior to that commit,
"implements" was missing entirely for qpid. The earlier commit
added it, but only declared that the transport was async-capable.
Turns out it's important also to declare the supported exchange
types. In particular, if the transport doesn't declare support
for the 'fanout' exchange type, pidbox wouldn't be used[1] and so
it would still not be possible to revoke a task with terminate=True
when using the qpid transport.
[1] https://github.com/celery/celery/commit/2f58c35340f648
qpid transport supports an async interface, but this wasn't declared
properly. It was missing an appropriate 'implements' class property.
This seems to have been missed because:
- kombu 4.x was branched from 3.0.21
- qpid transport was originally added after that in 3.0.24
- Transport.implements was added in commit 6a1abb7e9 on the 4.x branch
only, before the qpid transport was in that branch
- qpid transport code was then copied between 3.x and 4.x branches but
addition of Transport.implements was missed.