【问题标题】:gevent queue how to block and empy queue till item is in queue?gevent队列如何阻塞和清空队列直到项目在队列中?
【发布时间】:2016-03-08 10:45:36
【问题描述】:

Gevent 不工作。我想下面会永远阻塞,但我得到下面的错误。

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

【问题讨论】:

    标签: python python-2.7 gevent


    【解决方案1】:

    你得到这个例外是因为没有其他 greenlet 可以切换。您已经要求唯一的greenlet(主要greenlet)阻止,但它永远无法唤醒(因为没有其他greenlet)。基本上这是让你知道死锁的事情。

    【讨论】:

      猜你喜欢
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多