celery

Celery浅谈

 ̄綄美尐妖づ 提交于 2020-10-05 00:38:34
一、Celery 核心模块 1. Brokers brokers 中文意思为中间人,在这里就是指 任务队列本身 ,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker,Brokers 就是生产者和消费者存放/拿取产品的地方(队列)。Celery 扮演生产者和消费者的角色。 常见的 brokers 有 rabbitmq、redis、Zookeeper 等。推荐用Redis或RabbitMQ实现队列服务。 2. Workers 就是 Celery 中的 工作者 ,执行任务的单元,类似与生产/消费模型中的消费者。它实时监控消息队列,如果有任务就从队列中取出任务并执行它。 3. Backend / Result Stores 用于存储任务的执行结果 。队列中的任务运行完后的结果或者状态需要被任务发送者知道,那么就需要一个地方储存这些结果,就是 Result Stores 了。 常见的 backend 有 redis、Memcached 甚至常用的数据库都可以。 4. Tasks 就是 想在队列中进行的任务 ,有异步任务和定时任务。一般由用户、触发器或其他操作将任务入队,然后交由 workers 进行处理。 5. Beat 定时任务调度器 ,根据配置定时将任务发送给Brokers。 二、Celery 基本使用 1.创建一个celery application

Celery: retry装饰器

可紊 提交于 2020-09-25 10:58:02
celery retry装饰器 使用场景 保存任务结果到db 从db获取任务 celery 装饰器学习 @retry retry max_retries: 默认重试3次 执行成功返回. 执行失败,重试max_retries. def retry(fun): @wraps(fun) def _inner(*args, **kwargs): max_retries = kwargs.pop('max_retries', 3) for retries in range(max_retries): try: return fun(*args, **kwargs) except (DatabaseError, InvalidRequestError, StaleDataError): logger.warning( 'Failed operation %s. Retrying %s more times.', fun.__name__, max_retries - retries - 1, exc_info=True) if retries + 1 >= max_retries: raise return _inner 来源: oschina 链接: https://my.oschina.net/tplinuxhyh/blog/4530475