|
@@ -8,7 +8,7 @@ from celery import chain, chord, group
|
|
|
from celery.exceptions import TimeoutError
|
|
|
from celery.result import AsyncResult, GroupResult, ResultSet
|
|
|
|
|
|
-from .conftest import flaky, get_redis_connection
|
|
|
+from .conftest import flaky, get_active_redis_channels, get_redis_connection
|
|
|
from .tasks import (add, add_chord_to_chord, add_replaced, add_to_all,
|
|
|
add_to_all_to_chord, collect_ids, delayed_sum,
|
|
|
delayed_sum_with_soft_guard, identity, ids, print_unicode,
|
|
@@ -255,19 +255,13 @@ def assert_ids(r, expected_value, expected_root_id, expected_parent_id):
|
|
|
|
|
|
class test_chord:
|
|
|
|
|
|
- @staticmethod
|
|
|
- def _get_active_redis_channels(client):
|
|
|
- return client.execute_command('PUBSUB CHANNELS')
|
|
|
-
|
|
|
@flaky
|
|
|
def test_redis_subscribed_channels_leak(self, manager):
|
|
|
if not manager.app.conf.result_backend.startswith('redis'):
|
|
|
raise pytest.skip('Requires redis result backend.')
|
|
|
|
|
|
- redis_client = get_redis_connection()
|
|
|
-
|
|
|
manager.app.backend.result_consumer.on_after_fork()
|
|
|
- initial_channels = self._get_active_redis_channels(redis_client)
|
|
|
+ initial_channels = get_active_redis_channels()
|
|
|
initial_channels_count = len(initial_channels)
|
|
|
|
|
|
total_chords = 10
|
|
@@ -278,7 +272,7 @@ class test_chord:
|
|
|
|
|
|
manager.assert_result_tasks_in_progress_or_completed(async_results)
|
|
|
|
|
|
- channels_before = self._get_active_redis_channels(redis_client)
|
|
|
+ channels_before = get_active_redis_channels()
|
|
|
channels_before_count = len(channels_before)
|
|
|
|
|
|
assert set(channels_before) != set(initial_channels)
|
|
@@ -289,7 +283,7 @@ class test_chord:
|
|
|
# total chord tasks, plus the initial channels
|
|
|
# (existing from previous tests).
|
|
|
chord_header_task_count = 2
|
|
|
- assert channels_before_count == \
|
|
|
+ assert channels_before_count <= \
|
|
|
chord_header_task_count * total_chords + initial_channels_count
|
|
|
|
|
|
result_values = [
|
|
@@ -298,7 +292,7 @@ class test_chord:
|
|
|
]
|
|
|
assert result_values == [24] * total_chords
|
|
|
|
|
|
- channels_after = self._get_active_redis_channels(redis_client)
|
|
|
+ channels_after = get_active_redis_channels()
|
|
|
channels_after_count = len(channels_after)
|
|
|
|
|
|
assert channels_after_count == initial_channels_count
|