def test_WorkerPool_heartrate(url): broker = get_broker(url) pool = WorkerPool(broker, WorkerPool_heartrate_init, workers=1) with start_pool(pool): q = get_queue(url) res = Task(q.suicide_worker, heartrate=0.1, result_timeout=5)() assert res.wait(WAIT), repr(res) print(repr(res)) with assert_raises(TaskExpired): res.value
def test_WorkerPool_max_worker_tasks(url): broker = get_broker(url) pool = WorkerPool(broker, WorkerPool_max_worker_tasks_init, workers=1, max_worker_tasks=3) with start_pool(pool): q = get_queue(url) res = q.results([q.func() for n in range(4)]) assert res.wait(WAIT), repr(res) results = res.value assert isinstance(results, list), results eq_([r[1] for r in results], [1, 2, 3, 1]) eq_(len(set(r[0] for r in results)), 2)
def test_WorkerPool_crashed_worker(url): broker = get_broker(url) pool = WorkerPool(broker, WorkerPool_crashed_worker_init, workers=1) with start_pool(pool): q = get_queue(url) res = q.getpid() assert res.wait(WAIT), repr(res) pid = res.value q.kill_worker() res = q.getpid() assert res.wait(WAIT), repr(res) assert res.value != pid, pid
def test_WorkerPool_start_twice(url): broker = get_broker(url) pool = WorkerPool(broker, get_broker, workers=1) with start_pool(pool): with assert_raises(Error): pool.start(handle_sigterm=False)
def worker_pool(url, init_func, init_args, workers=1): process_config(init_args[-1], 'Pool-%s' % os.getpid()) broker = get_broker(url) with discard_tasks(broker): pool = WorkerPool(broker, init_func, init_args, workers=workers) pool.start(timeout=1)