初识celery

杀马特。学长 韩版系。学妹 提交于 2019-12-05 10:42:44

异步任务

异步任务是web开发中一个很常见的方法。对于一些耗时耗资源的操作,往往从主应用中 隔离,通过异步的方式执行。简而言之,做一个注册的功能,在用户使用邮箱注册成功之 后,需要给该邮箱发送一封激活邮件。如果直接放在应用中,则调用发邮件的过程会遇到 网络IO的阻塞,比好优雅的方式则是使用异步任务,应用在业务逻辑中触发一个异步任务。

Celery是一个异步任务的调度工具。它是Python写的库,但是它实现的通讯协议也可以 使用ruby,php,javascript等调用。异步任务除了消息队列的后台执行的方式,还是 一种则是跟进时间的计划任务。下面将会介绍如何使用celery实现这两种需求。

Celery broker 和 backend

开始了解celery的时 大专栏  初识celery候一定会有redis、rabbitmq这样的词儿,必然会一头雾水,然而 这正是celery设计的玄妙之处,简单来说,rabbitmq是一个采用Erlang写的强大的消 息队列工具。在celery中可以扮演broker的角色。那么broker究竟是什么鬼呢?

broker是一个消息传输的中间件,可以理解为一个邮箱。每当应用程序调用celery的异 步任务的时候,会向broker传递消息,而后celery的worker将会取到消息,进行对应的 程序执行。那么,这个邮箱可以看成是一个消息队列。那么什么又是backend,通常程序 发送的消息,发完就完了,可能都不知道对方是否接受了。为此,celery实现了一个 backend,用于存储这些消息以及celery执行的一些消息和结果。对于 brokers,官方 推荐是rabbitmq和redis,至于backend,就是数据库啦。为了简单起见,我们都用redis。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!