Skip to content

Commit 15082db

Browse files
committed
BNCASB-2204: Initial changes to clean the project (removing group client and unused code)
Initial changes to clean the project (removing group client and unused code)
1 parent 98787b0 commit 15082db

File tree

13 files changed

+24
-469
lines changed

13 files changed

+24
-469
lines changed

README.md

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -67,33 +67,6 @@ The retry call supports the `delay` and `execute_inline` arguments in order to d
6767

6868
**NOTE:** `retry()` throws a `MaxRetriesReachedException` exception if the maximum number of retries is reached.
6969

70-
#### Executing Tasks
71-
72-
The Elastic Beanstalk Worker Tier sends all tasks to a API endpoint. django-eb-sqs has already such an endpoint which can be used by specifying the url mapping in your `urls.py` file.
73-
74-
```python
75-
urlpatterns = [
76-
...
77-
url(r'^worker/', include('eb_sqs.urls', namespace='eb_sqs'))
78-
]
79-
```
80-
81-
In that case the relative endpoint url would be: `worker/process`
82-
83-
Set this url in the Elastic Beanstalk Worker settings prior to deployment.
84-
85-
During development you can use the included Django command to execute a small script which retrieves messages from SQS and posts them to this endpoint.
86-
87-
```bash
88-
python manage.py run_eb_sqs_worker --url <absoulte endpoint url> --queue <queue-name>
89-
```
90-
91-
For example:
92-
93-
```bash
94-
python manage.py run_eb_sqs_worker --url http://127.0.0.1:80/worker/process --queue default
95-
```
96-
9770
#### Executing Tasks without Elastic Beanstalk
9871

9972
Another way of executing tasks is to use the Django command `process_queue`.
@@ -113,27 +86,7 @@ python manage.py process_queue --queues queue1,queue2 # process queue1 and queue
11386
python manage.py process_queue --queues queue1,prefix:pr1-,queue2 # process queue1, queue2 and any queue whose name starts with 'pr1-'
11487
```
11588

116-
Use the signals `MESSAGES_RECEIVED`, `MESSAGES_PROCESSED`, `MESSAGES_DELETED` of the `WorkerService` to get informed about the current SQS batch being processed by the management command.
117-
118-
#### Group Tasks
119-
Multiple tasks can be grouped by specifying the `group_id` argument when calling `delay` on a task.
120-
If all tasks of a specific group are executed then the group callback task specified by `EB_SQS_GROUP_CALLBACK_TASK` is executed.
121-
122-
Example calls:
123-
```python
124-
echo.delay(message='Hello World!', group_id='1')
125-
echo.delay(message='Hallo Welt!', group_id='1')
126-
echo.delay(message='Hola mundo!', group_id='1')
127-
```
128-
129-
Example callback which is executed when all three tasks are finished:
130-
```python
131-
from eb_sqs.decorators import task
132-
133-
@task(queue_name='test', max_retries=5)
134-
def group_finished(group_id):
135-
pass
136-
```
89+
Use the signals `MESSAGES_RECEIVED`, `MESSAGES_PROCESSED`, `MESSAGES_DELETED` of
13790

13891
#### Auto Tasks
13992

eb_sqs/management/commands/run_eb_sqs_worker.py

Lines changed: 0 additions & 79 deletions
This file was deleted.

eb_sqs/redis/__init__.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

eb_sqs/redis/redis_group_client.py

Lines changed: 0 additions & 53 deletions
This file was deleted.

eb_sqs/tests/tests_views.py

Lines changed: 0 additions & 45 deletions
This file was deleted.

eb_sqs/tests/worker/tests_worker.py

Lines changed: 1 addition & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from eb_sqs import settings
88
from eb_sqs.decorators import task
9-
from eb_sqs.worker.group_client import GroupClient
109
from eb_sqs.worker.queue_client import QueueClient
1110
from eb_sqs.worker.worker import Worker
1211
from eb_sqs.worker.worker_exceptions import MaxRetriesReachedException
@@ -65,35 +64,18 @@ def setUp(self):
6564
settings.DEAD_LETTER_MODE = False
6665

6766
self.queue_mock = Mock(autospec=QueueClient)
68-
self.group_mock = Mock(autospec=GroupClient)
69-
self.group_mock.remove.return_value = True
70-
self.worker = Worker(self.queue_mock, self.group_mock)
67+
self.worker = Worker(self.queue_mock)
7168

7269
factory_mock = Mock(autospec=WorkerFactory)
7370
factory_mock.create.return_value = self.worker
7471
settings.WORKER_FACTORY = factory_mock
7572

76-
def setUpGroupsHandling(self):
77-
self.group_set = set()
78-
self.group_mock.add.side_effect = lambda tsk: self.group_set.add('{}-{}'.format(tsk.id, tsk.retry_id))
79-
self.group_mock.remove.side_effect = lambda tsk: len(self.group_set) == 0 if self.group_set.discard(
80-
'{}-{}'.format(tsk.id, tsk.retry_id)) is None else False
81-
8273
def test_worker_execution_no_group(self):
8374
msg = '{"id": "id-1", "retry": 0, "queue": "default", "maxRetries": 5, "args": [], "func": "eb_sqs.tests.worker.tests_worker.dummy_task", "kwargs": {"msg": "Hello World!"}}'
8475

8576
result = self.worker.execute(msg, 2)
8677

8778
self.assertEqual(result, 'Hello World!')
88-
self.group_mock.remove.assert_not_called()
89-
90-
def test_worker_execution_with_group(self):
91-
msg = '{"id": "id-1", "groupId": "group-5", "retry": 0, "queue": "default", "maxRetries": 5, "args": [], "func": "eb_sqs.tests.worker.tests_worker.dummy_task", "kwargs": {"msg": "Hello World!"}}'
92-
93-
result = self.worker.execute(msg)
94-
95-
self.assertEqual(result, 'Hello World!')
96-
self.group_mock.remove.assert_called_once()
9779

9880
def test_worker_execution_dead_letter_queue(self):
9981
settings.DEAD_LETTER_MODE = True
@@ -103,28 +85,20 @@ def test_worker_execution_dead_letter_queue(self):
10385
result = self.worker.execute(msg)
10486

10587
self.assertIsNone(result)
106-
self.group_mock.remove.assert_called_once()
10788

10889
def test_delay(self):
10990
self.worker.delay(None, 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 3, False)
11091

111-
self.group_mock.add.assert_not_called()
11292
self.queue_mock.add_message.assert_called_once()
11393
queue_delay = self.queue_mock.add_message.call_args[0][2]
11494
self.assertEqual(queue_delay, 3)
11595

11696
def test_delay_inline(self):
11797
result = self.worker.delay(None, 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 0, True)
11898

119-
self.group_mock.add.assert_not_called()
12099
self.queue_mock.add_message.assert_not_called()
121100
self.assertEqual(result, 'Hello World!')
122101

123-
def test_delay_with_group(self):
124-
self.worker.delay('group-id', 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 3, False)
125-
126-
self.group_mock.add.assert_called_once()
127-
128102
def test_retry_max_reached_execution(self):
129103
with self.assertRaises(MaxRetriesReachedException):
130104
max_retries_task.delay(execute_inline=True)
@@ -133,74 +107,3 @@ def test_retry_no_limit(self):
133107
retries_task.delay(10, execute_inline=True)
134108

135109
self.assertEqual(retries_task.retry_num, 10)
136-
137-
def test_group(self):
138-
settings.GROUP_CALLBACK_TASK = Mock()
139-
140-
self.worker.delay('group-id', 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 0, True)
141-
142-
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
143-
settings.GROUP_CALLBACK_TASK = None
144-
145-
def test_group_with_exception(self):
146-
settings.GROUP_CALLBACK_TASK = Mock()
147-
self.setUpGroupsHandling()
148-
149-
with self.assertRaises(TestException):
150-
exception_group_task.delay(group_id='group-id', execute_inline=True)
151-
152-
self.assertEqual(len(self.group_set), 0)
153-
self.assertEqual(self.group_mock.add.call_count, 1)
154-
self.assertEqual(self.group_mock.remove.call_count, 1)
155-
156-
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
157-
settings.GROUP_CALLBACK_TASK = None
158-
159-
def test_group_retries(self):
160-
settings.GROUP_CALLBACK_TASK = Mock()
161-
self.setUpGroupsHandling()
162-
163-
repeating_group_task.delay(3, group_id='group-id', execute_inline=True)
164-
165-
self.assertEqual(len(self.group_set), 0)
166-
self.assertEqual(self.group_mock.add.call_count, 4)
167-
self.assertEqual(self.group_mock.remove.call_count, 4)
168-
169-
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
170-
settings.GROUP_CALLBACK_TASK = None
171-
172-
def test_group_exception_in_retries(self):
173-
settings.GROUP_CALLBACK_TASK = Mock()
174-
self.setUpGroupsHandling()
175-
176-
with self.assertRaises(TestException):
177-
exception_repeating_group_task.delay(2, group_id='group-id', execute_inline=True)
178-
179-
self.assertEqual(len(self.group_set), 0)
180-
self.assertEqual(self.group_mock.add.call_count, 3)
181-
self.assertEqual(self.group_mock.remove.call_count, 3)
182-
183-
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
184-
settings.GROUP_CALLBACK_TASK = None
185-
186-
def test_group_match_retries_reached(self):
187-
settings.GROUP_CALLBACK_TASK = Mock()
188-
self.setUpGroupsHandling()
189-
190-
with self.assertRaises(MaxRetriesReachedException):
191-
max_retries_group_task.delay(group_id='group-id', execute_inline=True)
192-
193-
self.assertEqual(len(self.group_set), 0)
194-
self.assertEqual(self.group_mock.add.call_count, 5)
195-
self.assertEqual(self.group_mock.remove.call_count, 5)
196-
197-
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
198-
settings.GROUP_CALLBACK_TASK = None
199-
200-
def test_group_callback_string(self):
201-
settings.GROUP_CALLBACK_TASK = 'eb_sqs.tests.worker.tests_worker.global_group_mock'
202-
203-
self.worker.delay('group-id', 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 0, True)
204-
205-
global_group_mock.delay.assert_called_once()
206-
settings.GROUP_CALLBACK_TASK = None

0 commit comments

Comments
 (0)