Skip to content

Commit 2ce54d9

Browse files
author
Matt George
committed
added the method working to the Worker object
for more closely following the resque api
1 parent 931f430 commit 2ce54d9

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

src/pyres/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ def workers(self):
110110
return Worker.all(self)
111111

112112
def working(self):
113-
raise NotImplementedError
113+
from pyres.worker import Worker
114+
return Worker.working(self)
114115

115116
def remove_queue(self, queue):
116117
if queue in self._watched_queues:

src/pyres/worker.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,20 +155,33 @@ def all(cls, host="localhost:6379"):
155155

156156
@classmethod
157157
def working(cls, host):
158-
resq = ResQ(host)
158+
if isinstance(host, basestring):
159+
resq = ResQ(host)
160+
elif isinstance(host, ResQ):
161+
resq = host
159162
total = []
160163
for key in Worker.all(host):
161-
if Worker.exists(key,resq):
162-
total.append(key)
164+
if Worker.exists(key, resq):
165+
total.append('worker:%s' % key)
166+
names = []
167+
for key in total:
168+
value = resq.redis.get(key)
169+
if value:
170+
w = Worker.find(key[7:], resq)
171+
names.append(w)
172+
#for key in resq.redis.mget(*total):
173+
# w = Worker.find(key[7:], resq)
174+
# if w:
175+
# names.append(w)
163176
#total = [id if Worker.exists(id,resq) for id in resq.redis.smembers('workers')]
164-
names = [Worker.find(key[7:],resq) for key in resq._redis.mget(*total)] if total else []
177+
#names = [Worker.find(key[7:],resq) for key in resq._redis.mget(*total)] if total else []
165178
return names
166179

167180
@classmethod
168181
def find(cls, worker_id, resq):
169182
if Worker.exists(worker_id, resq):
170183
queues = worker_id.split(':')[-1].split(',')
171-
worker = cls(queues,resq._server)
184+
worker = cls(queues,resq)
172185
worker.id = worker_id
173186
return worker
174187
else:

src/tests.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,17 @@ def test_get_job(self):
271271
print w2.job()
272272
assert w2.job() == {}
273273

274+
def test_working(self):
275+
worker = Worker(['basic'])
276+
self.resq.enqueue_from_string('tests.Basic','basic','test1')
277+
worker.register_worker()
278+
job = Job.reserve('basic', self.resq)
279+
worker.working_on(job)
280+
name = "%s:%s:%s" % (os.uname()[1],os.getpid(),'basic')
281+
workers = Worker.working(self.resq)
282+
assert len(workers) == 1
283+
assert str(worker) == str(workers[0])
284+
assert worker != workers[0]
274285

275286
class StatTests(PyResTests):
276287
def test_incr(self):

0 commit comments

Comments
 (0)