如何清空plone.app.async队列中的所有任务?
清空plone.app.async队列的方法
你已经定位到了队列对象,只差直接操作底层存储来清空。在pdb里执行以下代码即可:
# 若未获取队列,先执行这段(已获取可跳过) from zope.component import queryUtility from plone.app.async.interfaces import IAsyncService service = queryUtility(IAsyncService) queues = service.getQueues() queue = queues.values()[0] # 核心清空操作 # 清空主队列底层存储 queue._queue._data.clear() # 清空放回队列底层存储 queue._putback_queue._data.clear() # 清空被持有的任务(调度器已领取但未完成的) queue._held.clear() # 重置队列长度计数 queue._length.set(0) # 重置总队列长度计数 queues._len.set(0)
说明:
CompositeQueue本身没有clear()方法,但它的_data属性是BTrees结构,支持clear()_held是存储已被调度器认领的任务的OOBTree,同样可以用clear()清空- 直接清空底层数据不会自动更新长度统计,所以需要手动调用
set(0)重置长度
执行完后可以用len(queue)验证是否已经清空。
内容的提问来源于stack exchange,提问作者GhitaB
相关产品推荐
相关产品推荐

