From 675238bc117a77a3f30785f085846b70c593bcee Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 25 May 2011 17:18:54 +0100 Subject: Implement processing, simplistic, synchronous. This is just to get the API working enough to get a feeling if it works well. --- bgproc.py | 13 ++++++++++--- bgproc_tests.py | 5 +++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/bgproc.py b/bgproc.py index 4c3ead8..949fb63 100644 --- a/bgproc.py +++ b/bgproc.py @@ -19,11 +19,15 @@ class BackgroundProcessing(object): '''Manage background processing queues.''' def __init__(self, func): + self.func = func self.pending_requests = 0 + self.requests = [] + self.results = [] def enqueue_request(self, request): '''Put a request into queue, to be processed by workers whenever.''' self.pending_requests += 1 + self.requests.append(request) def close_requests(self): '''Signal workers that they can retire. @@ -43,9 +47,12 @@ class BackgroundProcessing(object): because all requests have been processed. ''' - return False + for request in self.requests: + self.results.append(self.func(request)) + return len(self.results) > 0 def __iter__(self): '''Iterate over immediately available results.''' - if False: - yield + for result in self.results: + yield result + diff --git a/bgproc_tests.py b/bgproc_tests.py index 9709636..885a223 100644 --- a/bgproc_tests.py +++ b/bgproc_tests.py @@ -45,3 +45,8 @@ class BackgroundProcessingTests(unittest.TestCase): self.bg.enqueue_request(0) self.assertEqual(self.bg.pending_requests, 1) + def test_processes_stuff(self): + self.bg.enqueue_request(0) + self.assertEqual(self.bg.wait_for_results(), True) + self.assertEqual(list(self.bg), [1]) + -- cgit v1.2.1