簡體   English   中英

gevent隊列如何阻止和清空隊列直到項目進入隊列?

[英]gevent queue how to block and empy queue till item is in queue?

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

之所以會出現這種異常,是因為沒有其他可切換的greenlet。 您已經要求阻塞唯一的一個greenlet(主greenlet),但是它不可能喚醒(因為沒有其他greenlet)。 基本上,這是個讓您知道死鎖的事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM