我正在编写一个关于使用django管理网络设备的项目。需要运行带有按钮的python脚本并将结果实时返回到html。 例如:
views.py:
#The script which I want to run
def script():
print 'wait a minute, programme is running'
time.sleep(10)
print 'Now, in progress 1'
time.sleep(10)
print 'Now, in progress 2'
#The view which call the script
def test(request):
if request.method == 'POST':
script()
我想实时将消息放入html中。如何实现它?
答案 0 :(得分:0)
如果脚本位于单独的python文件中(例如名为DB::table('articles')->where('id', 'some id')->increment('views');
),则可以
只需导入这样的模块并调用该函数,如果它返回一个字符串作为其输出
script.py
否则,如果你需要保留打印输出,启动一个单独的python进程来运行它并捕获它的输出
import script
def test(request):
if request.method == 'POST':
output = script.script()
return HttpResponse(output, content_type="text/plain")
查看PMOTW上的this subprocess tutorial
注1:在Python 3上,您可能希望将输出转换为字符串(它由字节组成)
import subprocess
def test(request):
if request.method == 'POST':
output = subprocess.check_output(['python', 'script.py'])
return HttpResponse(output, content_type="text/plain")
注意2:假设启动的过程不会花费太长时间,否则HTTP请求将过期并且连接将关闭。