Celery 运行 worker with -Ofair from python

Celery run worker with -Ofair from python

我有一个带有 rabbitmq 的 celery 设置。问题是芹菜正在将任务移动到保留状态,而 运行 是一个长任务,并且在 运行 长任务完成之前不执行它们。

我想在不使用路由的情况下完成这项工作,启用“-Ofair”标志就可以完成这项工作。 Prefork pool prefetch settings

如何在 celery 中启用标志 python?谢谢

我正在使用 celery 3.1.19

$ celery report
software -> celery:3.1.19 (Cipater) kombu:3.0.32 py:3.4.3
            billiard:3.3.0.22 py-amqp:1.4.8
platform -> system:Linux arch:64bit, ELF imp:CPython
loader   -> celery.loaders.default.Loader
settings -> transport:amqp results:disabled

我按如下方式使用 Celery,并发设置为 4:

app = celery.Celery()
app.conf.update(
    BROKER_URL=broker,
    CELERY_RESULT_BACKEND=backend,
    CELERY_TASK_SERIALIZER='json',
    CELERY_IMPORTS=imports or [],
    CELERYD_CONCURRENCY=concurrency,
    CELERYD_HIJACK_ROOT_LOGGER=False
)

以下是我启动 worker 的方式:

worker = app.Worker(
    hostname=hostname,
    queues=[hostname]
)
worker.start()

你应该可以运行这样。

worker = app.Worker(
    hostname=hostname,
    queues=[hostname],
    optimization='fair'
)
worker.start()