从 django post save 信号产生一个线程可以吗?

Posted

技术标签:

【中文标题】从 django post save 信号产生一个线程可以吗?【英文标题】:Is it okay to spawn a thread from django post save signal? 【发布时间】:2015-02-24 22:17:41 【问题描述】:

我的一个模型上有 post_save 信号,它在大型 python 字典上调用 json.dumps。我想在一个单独的线程中调用这个 json.dumps,这样它可能不会减慢我模型上的保存调用。我想知道是否可以从 post_save 信号中生成一个新线程?我已经读过 post_save 信号本身就是线程,所以可以从中生成另一个 Python 线程吗?

编辑:由于某种原因,我不能使用 celery 任务。

【问题讨论】:

【参考方案1】:

这不是您问题的直接答案,但我从Is Django post_save signal asynchronous? 中的一个答案中找到了这个提示。我的 post_save 信号处理程序创建了一个 Celery 任务。

【讨论】:

【参考方案2】:

我不知道你会在哪里读到信号是在线程中执行的,因为这根本不是真的。 Django 不对线程做任何事情,你也不应该这样做:如果你想在进程外执行某些事情,请使用像 Celery 这样的任务队列系统。

【讨论】:

以上是关于从 django post save 信号产生一个线程可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django 信号(Pre_save,Post_save)从“B”模型的 ImageField 设置“A”模型的 ImageField

Django post_save() 信号实现

如何防止灯具与 django post_save 信号代码冲突?

识别 django post_save 信号中更改的字段

忽略 django 的 post_save 信号中对 m2m 关系的更改

Django:如何在 post_save 信号中访问原始(未修改)实例