- 论坛徽章:
- 0
|
本帖最后由 swenker 于 2016-07-08 13:39 编辑
请大家帮忙看看是什么问题,谢谢
场景如下:
backend_service.py中:
job_queue = Queue.Queue(5)
def submit_job(job):
job_queue.put(job)
logger.info("Enqueue new Job: JobID:%d,queue size:%d" %(job.order_id,job_queue.qsize()))
def handle_photos():
while True:
if not job_queue.empty():
job = job_queue.get_nowait()
logger.info("------------got job:%d" %job.order_id)
print "=============================================I am a task========================="
job_queue.task_done()
else:
logger.info("%d the queue is empty. will sleep 1 minute:%d..." %(id(job_queue),job_queue.qsize()))
time.sleep(20)
worker_thread = threading.Thread(target=handle_photos)
worker_thread.setDaemon(True)
worker_thread.start()
在webadmin.py中,会接受http请求,出发submit_job, 测试发现 如果是基于web环境来测试, 现成总是认为job_queue是空的,而submit_job中的qzine确实在不断的增加的。
这是怎么回事呢?
而且如果如果用下面的单元测试代码来测试,线程能正确的获取queue的状态。
class RequestSenderThread(threading.Thread):
def __init__(self,order_id,relative_folder,group=None, target=None, name=None, args=(), kwargs=None, verbose=None):
super(RequestSenderThread, self).__init__(group, target, name, args, kwargs, verbose)
def run(self):
i = 0
while(i<3):
pj = PhotoJob(int('11'+str(i)),'/20',1)
submit_job(pj)
i+=1
time.sleep(10)
class TestBatchImageHandler(unittest.TestCase):
def test_send_handle_order_photo(self):
rst = RequestSenderThread(11,'/2011/12/13')
rst.start()
print
print "sender started."
|
|