Exemple #1
0
    def run(self, queue_name='default', sleep_time=1, verbose=False):
        """Worker process: ties to the given queue and handle all incoming tasks

        @queue_name - name of the queue to tie with
        @sleep_time - pause time between two tasks"""
        queue = Queue()
        while not self.SHUTDOWN_IN_PROGRESS:
            try:
                if verbose:
                    print '[remaining tasks number: %s] ' % queue.length(queue_name),
                result = queue.pop(queue_name=queue_name, timeout=10)
            except Exception, e:
                result = None
                print >> sys.stderr, 'An exception occurs during the proc processing: %s' % e
            if verbose:
                print result
            time.sleep(sleep_time)
class TestRedisQueue(unittest.TestCase):
    def setUp(self):
        self.redis_args = dict(host='127.0.0.1', port=6379)
        self.key = 'test_redis_queue'
        self.queue = Queue(self.key, **self.redis_args)
    
    def tearDown(self):
        redis = Redis(**self.redis_args)
        redis.delete(self.key)
    
    def test_right(self):
        self.queue.append('one')
        self.queue.append('two')
        self.queue.append('three')
        self.assertEqual(self.queue.pop(), 'three')
        self.assertEqual(self.queue.pop(), 'two')
        self.assertEqual(self.queue.pop(), 'one')
        self.assertRaises(IndexError, self.queue.pop)
    
    def test_left(self):
        self.queue.appendleft('one')
        self.queue.appendleft('two')
        self.queue.appendleft('three')
        self.assertEqual(self.queue.popleft(), 'three')
        self.assertEqual(self.queue.popleft(), 'two')
        self.assertEqual(self.queue.popleft(), 'one')
        self.assertRaises(IndexError, self.queue.pop)
    
    def test_right_left(self):
        self.queue.append('one')
        self.queue.append('two')
        self.queue.append('three')
        self.assertEqual(self.queue.popleft(), 'one')
        self.assertEqual(self.queue.popleft(), 'two')
        self.assertEqual(self.queue.popleft(), 'three')
        self.assertRaises(IndexError, self.queue.pop)
    
    def test_left_right(self):
        self.queue.appendleft('one')
        self.queue.appendleft('two')
        self.queue.appendleft('three')
        self.assertEqual(self.queue.pop(), 'one')
        self.assertEqual(self.queue.pop(), 'two')
        self.assertEqual(self.queue.pop(), 'three')
        self.assertRaises(IndexError, self.queue.pop)

    def test_clear(self):
        self.queue.appendleft('one')
        self.queue.appendleft('two')
        self.queue.appendleft('three')
        self.queue.clear()
        self.assertRaises(IndexError, self.queue.pop)
        self.assertRaises(IndexError, self.queue.popleft)
    
    def test_remove(self):
        self.queue.append('one')
        self.queue.append('two')
        self.queue.append('two')
        self.queue.append('three')
        self.queue.append('two')
        self.queue.remove('two')
        self.assertEqual(self.queue.pop(), 'three')
        self.assertEqual(self.queue.pop(), 'one')
        self.assertRaises(IndexError, self.queue.pop)
    
    def test_contains(self):
        self.queue.append('one')
        self.queue.append('two')
        self.queue.append('three')
        self.assert_('one' in self.queue)
        self.assert_('two' in self.queue)
        self.assert_('three' in self.queue)
        self.assert_('four' not in self.queue)
    
    def test_extend_right(self):
        self.queue.extend(['one', 'two', 'three'])
        self.assertEqual(self.queue.pop(), 'three')
        self.assertEqual(self.queue.pop(), 'two')
        self.assertEqual(self.queue.pop(), 'one')
        self.assertRaises(IndexError, self.queue.pop)
    
    def test_extend_left(self):
        self.queue.extendleft(['one', 'two', 'three'])
        self.assertEqual(self.queue.popleft(), 'three')
        self.assertEqual(self.queue.popleft(), 'two')
        self.assertEqual(self.queue.popleft(), 'one')
        self.assertRaises(IndexError, self.queue.pop)
    
    def test_iteration(self):
        self.queue.append('one')
        self.queue.append('two')
        self.queue.append('three')
        self.assertEqual(list(iter(self.queue)), ['one', 'two', 'three'])
    
    def test_length(self):
        self.queue.append('one')
        self.queue.append('two')
        self.queue.append('three')
        self.assertEqual(len(self.queue), 3)