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

Ric*_*ick 3 python django long-running-processes

我正在使用Django并且正在制作一些我正在通过我的Web用户界面进行交互的长时间运行的进程.例如,它们将一直运行,每隔几分钟检查一次数据库值,并且只有在这已经改变时停止(将是布尔值为true).所以,我希望能够使用Django与这些进行交互,但不确定如何做到这一点.当我以前使用PHP时,我有一些方法可以做到这一点,想象一下在Python中更容易做到但是我的搜索无法找到任何东西.

基本上,我想要做的就是执行python代码而不等待它完成,所以它只是开始执行然后继续做django所需的任何其他事情,快速返回给用户的新页面.

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

谢谢你的建议.

dka*_*ins 6

无法保证,因为我还没有使用它,但"Celery"几乎可以满足您的要求,而且最初是专为Django而设计的.

http://celeryproject.org/

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

from celery.decorators import task

@task
def add(x, y):
    return x + y
Run Code Online (Sandbox Code Playgroud)

您可以在后台执行任务,或等待它完成:

>>> result = add.delay(8, 8)
>>> result.wait() # wait for and return the result
16
Run Code Online (Sandbox Code Playgroud)

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