• Django--队列2


    celery 4.2

    -Ofair现在是默认的调度策略

    关于-Ofair命令行选项的作用存在很多混淆,并且在解释中使用术语“预取”可能没有帮助,因为这个术语在AMQP中有多么混乱。

    当使用prefork池的Celery worker接收任务时,它需要将该任务委托给子进程执行。

    prefork池具有可配置数量的子进程(--concurrency),可用于执行任务,

    每个子进程使用管道/套接字与父进程通信:inqueue(管道/套接字):父发送任务到子进程outqueue(管道/套接字):child将结果/返回值发送给父级。

    在Celery 3.1中,默认的调度机制只是将任务发送到可写的第一个队列,并使用一些启发式方法确保我们在它们之间进行循环,以确保每个子进程都能接收相同数量的任务。这意味着在默认调度策略中,工作人员可以将任务发送到已经执行任务的同一子进程。如果该任务长时间运行,则可能会长时间阻止等待任务。更糟糕的是,即使有子进程可以自由地工作,数百个短期运行的任务也可能被困在长期运行的任务之后。添加了-Ofair调度策略以避免这种情况,并且在启用时添加了规则,即不应将任务发送到已执行任务的子进程。如果您只有短期运行任务,那么公平调度策略可能会稍微差一些。

    celery -A tasks worker -l info -P eventlet

    这个命令是开启了一个worker,但是它可以同时执行四个任务,这是因为它的子进程,prefork(这个是会根据你的电脑自动设置),我们自己也可以自定义

    另外他虽然执行四个,另外每一个worker还会预存一个,也就是说他会同时recevie5个,但是有一个不执行

  • 相关阅读:
    BZOJ1036 [ZJOI2008]树的统计Count
    3224: Tyvj 1728 普通平衡树
    BZOJ 3343教主的魔法
    BZOJ 2002[Hnoi2010]Bounce 弹飞绵羊
    BZOJ1503 [NOI2004]郁闷的出纳员
    BZOJ1588 [HNOI2002]营业额统计
    带有上下界的网络流
    堆优化 dijkstra +路径输出
    luogu P3388 【模板】割点(割顶)
    Tarjan 算法求无向图的割顶和桥
  • 原文地址:https://www.cnblogs.com/BlueFire-py/p/10059952.html
Copyright © 2020-2023  润新知