【问题标题】:Python: Prioritizing tasks and Running asynchronous tasks without a lockPython:确定任务的优先级并在没有锁的情况下运行异步任务
【发布时间】:2017-03-02 06:05:12
【问题描述】:

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

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

如果在 Gevent 中不可以,有没有其他库可以做到?

编辑
也许 Celery 可以在这里帮助我?

【问题讨论】:

    标签: asynchronous gevent greenlets


    【解决方案1】:

    如果您想管理计算资源,Python 异步库在这里无济于事,因为 AFAIK 也没有优先级调度程序。所有的绿线都是平等的。

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

    如果您的问题不需要任务(重新)执行保证、持久性、多机工作分配,那么我只需启动几个工作进程,使用操作系统为其分配 CPU、IO、磁盘优先级并通过 UNIX 发送工作/结果插座 DGRAM。一种特别简单的任务队列版本。如果你走这条路,请把你的工作分享为开源项目,我相信这种解决方案是有需求的。

    【讨论】:

    • 谢谢,也许我会在周末做一些开源项目来解决我的问题。但同时我会使用带锁的 Gevent 并将所有低优先级任务放在不同的低级优先进程
    猜你喜欢
    • 2021-10-18
    • 2015-05-06
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2017-01-24
    • 2021-07-19
    • 2020-04-25
    • 1970-01-01
    相关资源
    最近更新 更多