为了解决启动关闭程序方便,在django中启动结束任务的问题。

urls.py

    ################DJANGO start kill job############################
(r'^startjob/$', app_view.startjob),
(r'^showjob/$', app_view.showjob),
(r'^rmjob/$', app_view.rmjob),
################DJANGO start kill job############################

  

views.py

from os import path
TASKS_ROOT = path.dirname(path.abspath(path.dirname(__file__)))
PYTHON_ROOT = '/usr/bin/python'
job_workspace = path.join(TASKS_ROOT,'app').replace('\\', '/')
from tempfile import mkstemp
from os import fdopen,unlink,kill
from subprocess import Popen
import signal
from django.http import HttpResponse
def startjob(request):
"""Start a new long running process unless already started."""
if not request.session.has_key('job'):
#if True:
# create a temporary file to save the resuls
outfd,outname=mkstemp()
request.session['jobfile']=outname
outfile=fdopen(outfd,'a+')
print job_workspace proc=Popen((PYTHON_ROOT+" myjob.py").split(),shell=False,stdout=outfile,cwd=job_workspace)
# remember pid to terminate the job later
request.session['job']=proc.pid
print proc.pid
return HttpResponse('A <a href="/showjob/">new job</a> has started.') def showjob(request):
"""Show the last result of the running job."""
if not request.session.has_key('job'):
return HttpResponse('Not running a job.'+\
'<a href="/startjob/">Start a new one?</a>')
else:
filename=request.session['jobfile']
results=open(filename)
lines=results.readlines()
try:
return HttpResponse(lines[-1]+\
'<p><a href="/rmjob/">Terminate?</a>')
except:
return HttpResponse('No results yet.'+\
'<p><a href="/rmjob/">Terminate?</a>')
return response def rmjob(request):
"""Terminate the runining job."""
if request.session.has_key('job'):
job=request.session['job']
filename=request.session['jobfile']
try:
kill(job,signal.SIGKILL) # unix only
unlink(filename)
except OSError, e:
pass # probably the job has finished already
del request.session['job']
del request.session['jobfile']
return HttpResponseRedirect('/showjob/') # showjob

效果:

最新文章

  1. 求n*m网格内矩形的数目
  2. 导入安全证书到jdk步骤详细说明-原
  3. C++学习23 虚函数详解
  4. leetcode:Rotate Array
  5. [itint5]最大子矩阵和
  6. 这些废弃的 HTML 标签不要用
  7. device tree website
  8. Failure [INSTALL_FAILED_OLDER_SDK]
  9. mac 显示隐藏文件方法
  10. Excel 帮助类
  11. 《RabbitMQ Tutorial》译文 第 3 章 发布和订阅
  12. 【ASP.NET Core】运行原理(4):授权
  13. JavaScript 中的对象深度复制(Object Deep Clone)
  14. 一文搞懂TCP与UDP的区别
  15. mysql数据库truncate表时间长处理
  16. windows server防火墙添加例外的步骤
  17. MATLAB的一些小经验,记下来,facilitate future work
  18. Java如何使用线程异常?
  19. Pymongo NotMasterError while fetching count of the collection as per query from MongoDB in DRF
  20. Python+VSCode+Git 学习总结

热门文章

  1. 「日常训练」「小专题·图论」 Cow Contest (1-3)
  2. CSS3 : transition 属性
  3. 06-Mysql数据库----表的操作
  4. 切换pip源的简便方法
  5. HTTP 知新
  6. 数论3——gcd&amp;&amp;lcm
  7. DFS——CodeForces740DAlyona and a tree
  8. c# 生成dll
  9. [转]juery-zTree的基本用法
  10. Win10 1803安装Ubuntu1804子系统