gpt4 book ai didi

celery - django-信号和 celery 之间的区别

转载 作者:行者123 更新时间:2023-12-04 10:04:21 26 4
gpt4 key购买 nike

这可能是一个la脚的问题,但是我对这两个感到很困惑。我知道signals用于在发生某些事情时执行某些任务。但是 celery 呢?在文档中说:

Celery is an asynchronous task queue/job queue based on distributed message passing.



有人可以告诉我什么是 celery 吗?两者之间以及何时使用它们有什么区别?将不胜感激!谢谢你。

最佳答案

所有django信号的拳头都是同步的。例如,如果您有一个信号来处理SomeModel的before_save Action 。并且您具有...说... View 功能,如下所示:

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

您的代码的时间轴将如下所示:
  • 做一些事情
  • 进行SomeModel(some_field="Hello").save()调用:
  • 做一些django的东西
  • 在实际保存
  • 之前执行信号before_save处理程序
  • 实际保存到数据库
  • 做其他事情

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

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

    这不是一个简单的函数调用。此函数将在其他python进程(celery worker)中执行。在此调用之后,您可以决定:是否要等待此功能的结果?还是继续使用您的代码?还是您想要一些棘手的东西?

    如果您想执行一些后台或计划的任务,例如调整图像大小,解码视频,更新Facebook状态等, celery 非常方便。

    关于celery - django-信号和 celery 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291033/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com