Why you don’t use celery¶
Celery has problems with worker freezes and there is no any tools to investigate whats wrong with it. A HUGE codebase leads to numerous bugs. Redis is not primary backend and generic interface don’t allow to use redis effectively. I can do better.
Why you don’t use RQ¶
RQ has no delayed tasks. And it has very strange worker forking model which one should keep in mind. Also codebase is not flexible enough to add delayed task support. I can do better.
Why you don’t use ...¶
Other variants have same popularity and level of support as DSQ)
Task arguments and result must be msgpack-friendly. Really?¶
Yep. It’s an effective guard against complex objects, for example
ORM instances with convoluted state. Tasks do simple things and should
have simple arguments. I saw many real celery tasks which
user object and use only
user.id from it. It’s better
to write a task wrapper with simple arguments for and use underlying api
function then have fun with a pickle magic.
What about JSON?¶
JSON can’t into byte strings and non-string dict keys. It is the most dumb way to serialize data.