Re:Octobot - A Low-Latency, Highly Parallel Distributed Task...
by asksol on Monday September 20, 2010 @04:48PM
(#1710446)
I'm interested in seing the code/config used to benchark Celery. The default settings are not at all optimized for processing lots of small jobs, and you could easily tweak it to get a 100x speed up for that use case, e.g.:
Also, channels are not re-used unless you explicitly pass the Publisher, so e.g.
is known to be a massive speed-up for sending tasks in batch (it seems the creation of channels is very expensive in pyamqplib).
[ Parent
| on HN ]
Re:Octobot - A Low-Latency, Highly Parallel Distributed Task...
by asksol on Monday September 20, 2010 @05:09PM
(#1710513)
By the way the performance increase you're seeing with the PyInvoker (from your gist) is most likely because it doesn't have prefetch_count enabled.
Celery enables this so a single worker doesn't suck in a million messages at a time, and to balance the work load between available resources. As noted previously it can be disabled.
Btw, octobot looks great, maybe we can share ideas.
Re:Octobot - A Low-Latency, Highly Parallel Distributed Task...
by cscotta on Monday September 20, 2010 @06:06PM
(#1710672)
Right on, thanks Ask! I'm checking out some of this right now and might not be able to get through it all today, but will give it a try. Just shot you a couple messages outside of HN - love to talk when you have a chance!
Re:Octobot - A Low-Latency, Highly Parallel Distributed Task...
by StavrosK on Tuesday September 21, 2010 @09:16AM
(#1712468)
Does CELERYD_PREFETCH_MULTIPLIER do what I think it does (disable prefetching so workers get items as they need them)? I like Celery a lot, having used it for a few days, but the documentation is a bit frustrating :/