Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Django在后台处理运行python脚本的好方法?_Python_Django_Celery - Fatal编程技术网

使用Django在后台处理运行python脚本的好方法?

使用Django在后台处理运行python脚本的好方法?,python,django,celery,Python,Django,Celery,任务是在后台运行python脚本,并在提交请求时放置一个类似“您的脚本正在运行…稍后返回”的网页,然后在运行结束后下载结果页面。芹菜似乎是一个不错的选择,但它听起来有点过分,因为只有一个脚本将在后端运行。Django有没有简单的方法来处理它?谢谢。您可以使用python内置模块。正确使用Popen对象您可以启动一个进程,用Popen.poll()查看它的运行状态,用Popen.wait()等待它完成,甚至与它通信或终止它。所以我猜在Django/Python中可以有一个变量,每次启动一个进程时设

任务是在后台运行python脚本,并在提交请求时放置一个类似“您的脚本正在运行…稍后返回”的网页,然后在运行结束后下载结果页面。芹菜似乎是一个不错的选择,但它听起来有点过分,因为只有一个脚本将在后端运行。Django有没有简单的方法来处理它?谢谢。

您可以使用python内置模块。正确使用Popen对象您可以启动一个进程,用
Popen.poll()
查看它的运行状态,用
Popen.wait()
等待它完成,甚至与它通信或终止它。所以我猜在Django/Python中可以有一个变量,每次启动一个进程时设置为
False
,当该变量为False时,可以在站点上显示状态,完成后,您将变量设置为
True
,然后执行您的操作。

到目前为止您是否尝试过任何操作?在脚本完成之前,用户是否一直停留在此页面上?如果用户离开网站回来,页面是否需要检查后台任务的状态?这样的用例将决定您是否可以通过Ajax简单地轮询数据库状态更改,或者您是否需要更健壮的东西。简单的用例是呈现一个显示脚本正在运行的页面,并在脚本完成时呈现另一个页面。谢谢如果您要从WSGI内部打开子流程,并打开一个管道与之通信,那么一旦您的请求终止,它就会被杀死。非常感谢!我想我了解子流程步骤。但在我看来,如何在脚本运行时返回一页以指示脚本状态,并在脚本完成时返回另一页结果。我尝试了while循环,但似乎不起作用。