Django,Python在不等待响应的情况下调用Python代码?

Django,Python在不等待响应的情况下调用Python代码?,python,django,long-running-processes,Python,Django,Long Running Processes,我正在使用Django,正在创建一些长时间运行的进程,这些进程只是通过我的web用户界面进行交互。例如,它们将一直在运行,每隔几分钟检查一次数据库值,并且仅在发生更改时停止(布尔值为true-false)。因此,我希望能够使用Django与这些应用程序进行交互,但是我不确定如何做到这一点。当我使用PHP时,我有一些这样做的方法,我想用Python做会更容易,但我无法在搜索中找到任何东西 基本上,我希望能够执行python代码,而不必等待它完成,因此它只需开始执行,然后继续执行django所需的任

我正在使用Django,正在创建一些长时间运行的进程,这些进程只是通过我的web用户界面进行交互。例如,它们将一直在运行,每隔几分钟检查一次数据库值,并且仅在发生更改时停止(布尔值为true-false)。因此,我希望能够使用Django与这些应用程序进行交互,但是我不确定如何做到这一点。当我使用PHP时,我有一些这样做的方法,我想用Python做会更容易,但我无法在搜索中找到任何东西

基本上,我希望能够执行python代码,而不必等待它完成,因此它只需开始执行,然后继续执行django所需的任何其他操作,快速将新页面返回给用户

我知道有办法调用外部程序,所以我想这可能是唯一的办法?有没有办法只调用其他python代码就可以做到这一点


谢谢你的建议。

我不能担保,因为我还没有用过它,但“芹菜”几乎满足了你的要求,最初是专门为Django制作的

他们的示例显示了添加两个数字的简单任务:

from celery.decorators import task

@task
def add(x, y):
    return x + y
您可以在后台执行任务,也可以等待任务完成:

>>> result = add.delay(8, 8)
>>> result.wait() # wait for and return the result
16

您可能还需要安装才能使其正常工作,因此它可能比您正在寻找的解决方案更复杂,但它将实现您的目标。

您需要一个异步消息管理器。我已经把Gearman和Django结合起来了。任何可pickle的Python对象都可以发送给Gearman,Gearman将完成所有工作,并将结果发布到任何您想要的地方;本教程包括发回Django数据库的示例(还展示了如何在Django之外使用ORM)

谢谢,是的,只是在做更多的搜索时遇到了这个问题,我们一定会检查它的可能的副本