Skip to content

Commit 7df7d40

Browse files
committed
Remove dependency on simplesignals
1 parent ae52e3b commit 7df7d40

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

django_dbq/management/commands/worker.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from django.utils import timezone
44
from django.utils.module_loading import import_string
55
from django_dbq.models import Job
6-
from simplesignals.process import WorkerProcessBase
76
from time import sleep
87
import logging
8+
import signal
99

1010

1111
logger = logging.getLogger(__name__)
@@ -74,17 +74,27 @@ def process_job(queue_name):
7474
raise
7575

7676

77-
class Worker(WorkerProcessBase):
78-
79-
process_title = "jobworker"
80-
77+
class Worker:
8178
def __init__(self, name, rate_limit_in_seconds):
8279
self.queue_name = name
8380
self.rate_limit_in_seconds = rate_limit_in_seconds
81+
self.alive = True
8482
self.last_job_finished = None
85-
super(Worker, self).__init__()
83+
self.init_signals()
84+
85+
def init_signals(self):
86+
signal.signal(signal.SIGINT, self.shutdown)
87+
signal.signal(signal.SIGQUIT, self.shutdown)
88+
signal.signal(signal.SIGTERM, self.shutdown)
89+
90+
def shutdown(self):
91+
self.alive = False
92+
93+
def run(self):
94+
while self.alive:
95+
self.process_job()
8696

87-
def do_work(self):
97+
def process_job(self):
8898
sleep(1)
8999
if (
90100
self.last_job_finished

django_dbq/tests.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,37 +148,37 @@ def test_queue_depth_for_queue_with_zero_jobs(self):
148148
@freezegun.freeze_time()
149149
@mock.patch("django_dbq.management.commands.worker.sleep")
150150
@mock.patch("django_dbq.management.commands.worker.process_job")
151-
class WorkerProcessDoWorkTestCase(TestCase):
151+
class WorkerProcessProcessJobTestCase(TestCase):
152152
def setUp(self):
153153
super().setUp()
154154
self.MockWorker = mock.MagicMock()
155155
self.MockWorker.queue_name = "default"
156156
self.MockWorker.rate_limit_in_seconds = 5
157157
self.MockWorker.last_job_finished = None
158158

159-
def test_do_work_no_previous_job_run(self, mock_process_job, mock_sleep):
160-
Worker.do_work(self.MockWorker)
159+
def test_process_job_no_previous_job_run(self, mock_process_job, mock_sleep):
160+
Worker.process_job(self.MockWorker)
161161
self.assertEqual(mock_sleep.call_count, 1)
162162
self.assertEqual(mock_process_job.call_count, 1)
163163
self.assertEqual(self.MockWorker.last_job_finished, timezone.now())
164164

165-
def test_do_work_previous_job_too_soon(self, mock_process_job, mock_sleep):
165+
def test_process_job_previous_job_too_soon(self, mock_process_job, mock_sleep):
166166
self.MockWorker.last_job_finished = timezone.now() - timezone.timedelta(
167167
seconds=2
168168
)
169-
Worker.do_work(self.MockWorker)
169+
Worker.process_job(self.MockWorker)
170170
self.assertEqual(mock_sleep.call_count, 1)
171171
self.assertEqual(mock_process_job.call_count, 0)
172172
self.assertEqual(
173173
self.MockWorker.last_job_finished,
174174
timezone.now() - timezone.timedelta(seconds=2),
175175
)
176176

177-
def test_do_work_previous_job_long_time_ago(self, mock_process_job, mock_sleep):
177+
def test_process_job_previous_job_long_time_ago(self, mock_process_job, mock_sleep):
178178
self.MockWorker.last_job_finished = timezone.now() - timezone.timedelta(
179179
seconds=7
180180
)
181-
Worker.do_work(self.MockWorker)
181+
Worker.process_job(self.MockWorker)
182182
self.assertEqual(mock_sleep.call_count, 1)
183183
self.assertEqual(mock_process_job.call_count, 1)
184184
self.assertEqual(self.MockWorker.last_job_finished, timezone.now())

0 commit comments

Comments
 (0)