2016-03-08 126 views
0

Gevent无法正常工作。我想下面会永远阻止,但我得到下面的错误。gevent队列如何阻塞和empy队列,直到项目在队列中?

from gevent import monkey; monkey.patch_all() 
import gevent 
import gevent.queue  
queue = gevent.queue.Queue() 
queue.get(block=True, timeout=None) 



File "/home/ubuntu/workspace/zenserver/upload_pusher.py", line 53, in proccess_file 
    filepath = queue.get(block=True, timeout=None) 
    File "/usr/local/lib/python2.7/dist-packages/gevent-1.0b2-py2.7-linux-x86_64.egg/gevent/queue.py", line 189, in get 
    result = waiter.get() 
    File "/usr/local/lib/python2.7/dist-packages/gevent-1.0b2-py2.7-linux-x86_64.egg/gevent/hub.py", line 616, in get 
    return self.hub.switch() 
    File "/usr/local/lib/python2.7/dist-packages/gevent-1.0b2-py2.7-linux-x86_64.egg/gevent/hub.py", line 373, in switch 
    return greenlet.switch(self) 
gevent.hub.LoopExit: This operation would block forever 

回答

0

由于没有其他greenlet切换到,您会得到该异常。你已经问过唯一的greenlet(主greenlet)是否被阻挡,但是它不可能唤醒(因为没有其他的greenlet)。基本上这是gevent让你知道一个僵局。