Python:优先处理任务并在没有锁定的情况下运行异步任务

时间:2016-10-20 09:51:21

标签: asynchronous gevent greenlets

现在我正在使用Gevent,我想问两个问题:

  • 有没有办法执行永远不会异步执行的特定任务(而不是在每个任务中使用Lock)
  • 是否可以在Gevent中优先排序生成任务?就像一组将以低优先级生成的任务,将在所有其他任务完成时执行。 例如,当每个任务处理各种优先级的套接字请求时,两个侦听不同套接字的任务

如果在Gevent中无法实现,是否还有其他库可以完成?

修改
也许芹菜可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

如果要管理计算资源,Python异步库在这里无法帮助,因为AFAIK既没有优先级调度程序。所有的绿色线都是平等的。

任务队列通常具有优先级概念,因此Celery或Beanstalk是一种方法。

如果您的问题不需要任务(重新)执行保证,持久性,多机器工作分配,那么我只需启动一些工作进程,使用OS为它们分配CPU,IO,磁盘优先级并通过UNIX发送工作/结果socket DGRAM。一种ad-hoc更简单的任务队列版本。如果你这样做,请分享你的工作作为开源项目,我相信有这种解决方案的需求。