Celery 踩坑笔记

本文记录了在使用 Celery 过程中遇到的问题,包括任务调用的限制、动态设置 subtask options 的挑战、并发方式的选择以及数据处理的适用场景。尽管 Celery 在爬虫数据处理等场景表现出色,但在遇到大规模数据处理时的网络错误导致作者最终决定放弃在生产环境中使用 Celery。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 看教程里经常出现的那个魔法般的from task import add实际上只是同目录下对于模块的引用。因为 @app.task 修改后的对象和原函数对象一样,都可以直接调用,也都是调用本地方法。不同的是添加了 Celery 自己的方法,比如 delay,调用这些方法就是走 Celery 的流程了。

  2. 配置可以在 celeryconfig.py 中设置,用 app.config_from_object('celeryconfig')
    也可以用 app.conf.update(k=v) 设置。

  3. 常用的类 from kombu import Exchange, Queue

  4. Celery task 中不允许调用别的 task 后阻塞式的 get 等待结果。版本 3.2 后会对此行为抛出异常。根据官方文档,应该使用类似管道形式的调用来解决。但是我想根据第一个 task 的结果指定 route_key、exchange,怎么办呢?

    文档挺详细的:subtask 之于 s,就像 apply_async 之于 delay。可是以这种形式还是没办法解决问题。问题描述为:如何动态设置下一个 subtask 的 options?目前只能先取得返回

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值