celery overview archtecture and how it works
MQ?RPC?Task Queue?
任务队列是逻辑模型, 解决多个tasks如何更好的执行, 可以基于MQ实现
RPC 实现了远程任务的框架,同样可以基于MQ实现
MQ 是异构系统间最好的通信模型,封装了通信,消息存储,中转等
Celery
Celery是python实现的优秀的异步任务队列
框架.
如何优秀?考虑更全面,更稳健,更好用,随便举几个问题:
异步任务无回复怎么办?
可以监控异步任务吗?进度管理?
不想基于Rabbitmq实现,怎么办?
分布式异步任务可以吗?
精确的定时任务调度,星期几,week, year?
任务执行流(task chain)?
任务资源泄露怎么处理?
Celery基于queue实现Broker,支持Rabbitmq,Redis等
Broker简单理解就是MQ里的queue,对象被序列化后,就是存在Broker里, 反序列化后,再给真正执行任务的Worker.
python序列化工具: Pickle,Msgpack,Protobuf,JSON,yaml等…
复杂object,不要serialized!可以存数据库,在Worker的remote call里id检索
4个角色
Web, Broker,Result Backend, Worker