django - 信号与芹菜的区别

 mobiledu2402851173 发布于 2023-02-13 18:44

这可能是一个蹩脚的问题,但我真的很困惑这两个.我知道signals当事情发生时我习惯做一些任务.但芹菜怎么样?在文档中它说:

Celery是基于分布式消息传递的异步任务队列/作业队列.

有人请告诉我芹菜是什么吗?这两者之间有什么区别以及何时使用它们?将不胜感激!谢谢.

1 个回答
  • 所有django信号的拳头是同步的.例如,如果您有一个处理SomeModel的before_save操作的信号.你有...说...查看这样的功能:

    def some_view(requrest):
        # do some staff
        SomeModel(some_field="Hello").save()
        # do other stuff
    

    您的代码的时间线将如下所示:

    做一些事情

    SomeModel(some_field="Hello").save()拨打:

    做一些django的东西

    在实际保存之前执行信号before_save处理程序

    实际保存到DB

    做其他事情

    信号在python解释器的同一个实例上工作(换句话说,在你的操作系统的同一个进程中).

    Celery提供异步任务.这些任务可以像django信号一样工作(例如celery_task(arg1 ="Hello")).但常见的情况是异步调用:

    celery_task.delay(arg1="Hello") 
    

    这不是一个简单的函数调用.该函数将在其他python进程(celery worker)中执行.在这个电话之后你可以决定:你想等待这个功能的结果吗?或者你继续使用你的代码?或者你想要一些棘手的东西?

    芹菜非常方便,以防你想做一些背景或计划任务,如调整大小图像,解码视频,更新Facebook状态等.

    2023-02-13 18:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有