【问题标题】:Django celery running only two tasks at once?Django celery 一次只运行两个任务?
【发布时间】:2013-03-09 05:37:32
【问题描述】:

我有一个这样的芹菜任务:

@celery.task
def file_transfer(password, source12, destination):
    result = subprocess.Popen(['sshpass', '-p', password, 'rsync', '-avz', source12, destination], 
                                    stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]                             
    return result        

我在 Djagno 视图中调用了。

用户可以选择多个文件复制到目的地。例如,如果用户选择一次 4 个文件,celery 只接受 2 个任务。怎么了?

【问题讨论】:

    标签: django celery django-celery djcelery


    【解决方案1】:

    你检查过你的worker的并发设置吗?

    例如,如果您只有一个工作人员在两核机器上运行,则默认情况下并发为 2。这意味着一次只能执行两个任务。

    您可以使用开关从工作人员命令行更改此设置:

     -c N
    

    其中 N 是并行任务的数量

    【讨论】:

    • 并发设置在哪里,请给我完整的命令来更改设置。
    • 我这样做了,但我收到此错误:消费者:无法连接到 amqp://guest@127.0.0.1:5672//:[Errno 111] 连接被拒绝。 6.00 秒后重试...我正在使用数据库后端。
    • 仍然需要 amqp 来处理消息。您设置的数据库后端可能是针对结果的。对于排队系统,您应该使用 BROKER_URL="django://" 设置。见这里:docs.celeryproject.org/en/latest/getting-started/brokers/…
    • 您收到该错误是因为您的 BROKER 仍设置为 amqp:// 并且您可能没有在 localhost:5672 中运行的 AMQP 实例
    • 我有这个:BROKER_URL = "sqla+mysql://root:password@localhost/galaxy"
    猜你喜欢
    • 2023-03-24
    • 2020-07-25
    • 2012-08-13
    • 2017-07-10
    • 1970-01-01
    • 2014-03-17
    • 2013-01-12
    • 2011-09-21
    • 2022-11-14
    相关资源
    最近更新 更多