diff options
author | VG <vg@devys.org> | 2016-04-06 22:30:26 +0200 |
---|---|---|
committer | VG <vg@devys.org> | 2016-04-06 22:30:26 +0200 |
commit | e28490f18420e4c466614268140a7f8dbaaf2c78 (patch) | |
tree | c7b5810824668e473b1e4111cd7d596df61db9a0 | |
parent | 5d1b21751b056342771e69a545e842440060199d (diff) | |
download | wqueue-e28490f18420e4c466614268140a7f8dbaaf2c78.tar.gz wqueue-e28490f18420e4c466614268140a7f8dbaaf2c78.tar.bz2 wqueue-e28490f18420e4c466614268140a7f8dbaaf2c78.zip |
Auto-commit on 807fe7afb37fe2cfcf15c9457d04f64fa11b7511
-rwxr-xr-x | tests/wqueue2.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/tests/wqueue2.py b/tests/wqueue2.py index 0a3791f..635b52c 100755 --- a/tests/wqueue2.py +++ b/tests/wqueue2.py @@ -7,6 +7,7 @@ import asyncio import os import functools import shutils +import collections u8open = functools.partial(open, encoding='utf8') @@ -15,33 +16,35 @@ u8open = functools.partial(open, encoding='utf8') class PersistentJobQueue2: def __init__(self, filename, loop=None): - self.queue = deque.deque() - self.current_job = deque.deque() + self.queue = collections.deque() + self.current_job = collections.deque() self.event = asyncio.Event(loop=loop) self.loop = loop def push_job(self, item): - self.queue.push_right(item) + self.queue.append(item) self.event.set() async def get_job(self, item): - if not self.current_job.empty(): + if len(self.current_job): return self.current_job[0] - if not self.queue.empty(): + if len(self.queue): job_item = self.queue.pop() else: self.event.clear() await self.event.wait() job_item = self.queue.pop() - self.current_job.push_right(self.queue.pop()) + self.current_job.append(job_item)) return self.current_job[0] async def mark_job_done(self): - assert not self.current_job.empty() + assert len(self.current_job) self.current_job.pop() def dump_queue(self, filename): ''' + dump and clean the queue in order for it to be edited. + note: current file is not saved since it would be inconsistent if the queue is reloaded but file has finished being processed between. @@ -57,6 +60,9 @@ class PersistentJobQueue2: f.write(self.queue.dump()) def reload_from_filename(self, filename): + ''' + reloads a queue after editing it. + ''' with u8open(filename) as f: items = f.read().parse() |