Skip to content

Commit a195cc0

Browse files
committed
Move monkey patching to bin/qless-py-worker.
1 parent 04cd171 commit a195cc0

File tree

3 files changed

+23
-26
lines changed

3 files changed

+23
-26
lines changed

bin/qless-py-worker

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,22 @@ parser.add_argument('-r', '--resume', default=False, action='store_true',
4040
help='Try to resume jobs that this worker had previously been working on')
4141
args = parser.parse_args()
4242

43+
# Build up the kwargs that we'll pass to the worker
44+
kwargs = {
45+
'workers': args.workers,
46+
'interval': args.interval,
47+
'resume': args.resume
48+
}
49+
50+
# If we're supposed to use greenlets...
51+
if args.greenlets:
52+
from gevent import monkey
53+
monkey.patch_all()
54+
kwargs.update({
55+
'klass': 'qless.workers.greenlet.GeventWorker',
56+
'greenlets': args.greenlets
57+
})
58+
4359
import os
4460
import sys
4561
import qless
@@ -73,20 +89,6 @@ for module in getattr(args, 'import'):
7389
# Change path to our working directory
7490
os.chdir(args.workdir)
7591

76-
# Build up the kwargs that we'll pass to the worker
77-
kwargs = {
78-
'workers': args.workers,
79-
'interval': args.interval,
80-
'resume': args.resume
81-
}
82-
83-
# If we're supposed to use greenlets...
84-
if args.greenlets:
85-
kwargs.update({
86-
'klass': 'qless.workers.greenlet.GeventWorker',
87-
'greenlets': args.greenlets
88-
})
89-
9092
# And now run the worker
9193
ForkingWorker(
9294
args.queue, qless.Client(args.host, hostname=args.name), **kwargs).run()

qless/workers/greenlet.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,11 @@ def kill(self, jid):
4444
logger.warn('Lost ownership of %s' % jid)
4545
greenlet.kill()
4646

47-
@classmethod
48-
def patch(cls): # pragma: no cover
49-
'''Monkey-patch anything that needs to be patched'''
50-
from gevent import monkey
51-
monkey.patch_all()
52-
5347
def run(self):
5448
'''Work on jobs'''
5549
# Register signal handlers
5650
self.signals()
5751

58-
# And monkey-patch before doing any imports
59-
self.patch()
60-
6152
# Start listening
6253
with self.listener():
6354
try:

test/test_worker.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,13 @@ def setUp(self):
2020

2121
def test_proctitle(self):
2222
'''Make sure we can get / set the process title'''
23-
before = Worker.title()
24-
Worker.title('Foo')
25-
self.assertNotEqual(before, Worker.title())
23+
try:
24+
import setproctitle
25+
before = Worker.title()
26+
Worker.title('Foo')
27+
self.assertNotEqual(before, Worker.title())
28+
except ImportError:
29+
self.skipTest('setproctitle not available')
2630

2731
def test_kill(self):
2832
'''The base worker class' kill method should raise an exception'''

0 commit comments

Comments
 (0)