在python中用于任务队列的数据结构

时间:2012-05-10 12:41:57

标签: python queue task

我需要在python中实现一个具有以下功能的任务队列:

  1. 最多n个任务可以并行运行
  2. 任务状态可以随时查询(准备,运行或完成)
  3. 支持超时
  4. 支持失败时重试
  5. 我应该看一下哪种数据结构/设计模式?

    这实际上是一个小任务系统,而不仅仅是一个队列。我已经知道数据结构,如FIFO,优先级队列和芹菜等系统。而这个问题主要关注任务管理而不是并发模型(线程,协同程序等)。

    目前我可以想到一个包含所有任务(taskid => taskobj)用于查询的大型dict(哈希表)和一个用于待处理任务的优先级队列。所有任务状态(start_time,retry_count等)都存储在任务对象中。正在运行的任务被放入另一个优先级队列中,最旧的任务位于顶部,因此超时检查可以有效地提高性能。当任务失败/超时时,它将被添加到重试队列中。调度程序从挂起队列和重试队列中提取待处理任务,决定运行哪些任务,将正在运行的任务数保持在阈值之下。

0 个答案:

没有答案