Closed
Bug 1169696
Opened 9 years ago
Closed 8 years ago
Use librabbitmq with Celery/Kombu for improved performance
Categories
(Tree Management :: Treeherder, defect, P3)
Tree Management
Treeherder
Tracking
(Not tracked)
RESOLVED
WONTFIX
People
(Reporter: emorley, Unassigned)
Details
Attachments
(1 file)
The Celery docs seem to suggest using librabbitmq over the in-built py-amqp:
http://celery.readthedocs.org/en/latest/userguide/optimizing.html#librabbitmq
We should take a look :-)
Reporter | ||
Updated•9 years ago
|
Priority: -- → P3
Reporter | ||
Updated•9 years ago
|
Assignee: nobody → emorley
Status: NEW → ASSIGNED
Reporter | ||
Updated•9 years ago
|
Summary: Consider switching to librabbitmq → Use librabbitmq with Celery/Kombu for improved performance
Comment 1•9 years ago
|
||
Reporter | ||
Comment 2•9 years ago
|
||
It looks like there's a bug in either Kombu, py-amqp or librabbitmq, since the return type from SimpleQueue.get() actually varies depending on which is used. I've filed an issue against Kombu for this:
https://github.com/celery/kombu/issues/555
Reporter | ||
Comment 3•9 years ago
|
||
Comment on attachment 8703603 [details] [review]
[treeherder] mozilla:use-librabbitmq > mozilla:master
The issue I've filed against Kombu may or may not be a bug they'll fix, but we're only seeing it because we're using `body` rather than the preferred `payload`, so it's easy for us to work around :-)
Attachment #8703603 -
Flags: review?(cdawson)
Updated•9 years ago
|
Attachment #8703603 -
Flags: review?(cdawson) → review+
Comment 4•9 years ago
|
||
Commits pushed to master at https://github.com/mozilla/treeherder
https://github.com/mozilla/treeherder/commit/96ca71bb288164704b019adaf3bf945d39a07292
Bug 1169696 - Use the message payload attribute rather than raw body
`body` is the raw message content, which can vary depending on backend:
https://github.com/celery/kombu/issues/555
We should be using `payload` instead, which handles the deserialisation
for us, and isn't effected by using librabbitmq instead of py-amqp.
https://github.com/mozilla/treeherder/commit/375960c8437788526259ea2c1f6e042afec279a0
Bug 1169696 - Use librabbitmq with Celery/Kombu for improved performance
For rabbitmq transports specified using `amqp://`, Celery/Kombu will use
librabbitmq automatically if it's available, otherwise will fall back to
the pure Python (and therefore slower) amqp:
http://celery.readthedocs.org/en/latest/userguide/optimizing.html#librabbitmq
Reporter | ||
Updated•9 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Comment 5•9 years ago
|
||
Commit pushed to master at https://github.com/mozilla/treeherder
https://github.com/mozilla/treeherder/commit/d1e25ed9c700e648033817e04bc73e441fe785c5
Revert "Bug 1169696 - Use librabbitmq with Celery/Kombu for improved performance"
This reverts commit 375960c8437788526259ea2c1f6e042afec279a0.
Due to:
exceptions:NotImplementedError: ssl not supported by librabbitmq, please
use pyamqp:// or stunnel
Reporter | ||
Comment 6•9 years ago
|
||
So it turns out that Kombu prevents using TLS with librabbitmq, even though:
(a) their docs don't mention this at all
(b) librabbitmq (and rabbitmq-c that it uses) actually supports it
As such, I've reverted the librabbitmq commit (I've left the one that fixed usage of body instead of payload) and filed an issue against Kombu for allowing use of TLS with librabbitmq:
https://github.com/celery/kombu/issues/556
This didn't cause tests to fail since they don't (and can't) use TLS. It didn't fail on Heroku since publishing to Pulse isn't set up.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Reporter | ||
Comment 7•9 years ago
|
||
This is blocked on kombu fixing:
https://github.com/celery/kombu/issues/556
Assignee: emorley → nobody
Status: REOPENED → NEW
Reporter | ||
Comment 8•8 years ago
|
||
librabbitmq is not sufficiently maintained, let's stick with py-amqp.
Status: NEW → RESOLVED
Closed: 9 years ago → 8 years ago
Resolution: --- → WONTFIX
You need to log in
before you can comment on or make changes to this bug.
Description
•