芹菜 - 使用apply_async添加7000个任务需要12秒



我正在使用芹菜将任务分配给多个服务器。由于某些原因,在队列中添加7,000个任务非常慢,并且似乎是CPU绑定的。执行下面的代码需要12秒钟,这只是将任务添加到队列中。

start = time.time()
for url in urls:
    fetch_url.apply_async((url.strip(),), queue='fetch_url_queue')
print time.time() - start

在经纪人之间切换(尝试过Redis,RabbitMQ和PYAMQP(没有任何显着影响。

减少工人数量(每个人都在自己的服务器上运行,与添加任务的主服务器分开(没有任何显着影响。

通过的URL非常小,每个URL大约80个字符。

我配置中任意两个给定服务器之间的延迟是sub-millisecond(< 1ms(。

我一定做错了。当然,芹菜必须能够在少于几秒钟的时间内将7,000个任务添加到队列中。

可以排队的速率取决于您正在使用的芹菜经纪人和服务器CPU。

与AMD A4-5000 CPU&4GB RAM,以下是各种经纪人的任务率

# memory -> 400 tasks/sec
# rabbitmq -> 220 tasks/sec
# postgres -> 30 tasks/sec

使用Intel(R(Xeon(R(CPU E5-2676 V3 @ 2.40GHz&4GB RAM

# memory -> 2000 tasks/sec
# rabbitmq -> 1500 tasks/sec
# postgres -> 200 tasks/sec

相关内容

  • 没有找到相关文章

最新更新