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

urls.py

  1. ################DJANGO start kill job############################
  2. (r'^startjob/$', app_view.startjob),
  3. (r'^showjob/$', app_view.showjob),
  4. (r'^rmjob/$', app_view.rmjob),
  5. ################DJANGO start kill job############################

  

views.py

  1. from os import path
  2. TASKS_ROOT = path.dirname(path.abspath(path.dirname(__file__)))
  3. PYTHON_ROOT = '/usr/bin/python'
  4. job_workspace = path.join(TASKS_ROOT,'app').replace('\\', '/')
  5. from tempfile import mkstemp
  6. from os import fdopen,unlink,kill
  7. from subprocess import Popen
  8. import signal
  9. from django.http import HttpResponse
  10. def startjob(request):
  11. """Start a new long running process unless already started."""
  12. if not request.session.has_key('job'):
  13. #if True:
  14. # create a temporary file to save the resuls
  15. outfd,outname=mkstemp()
  16. request.session['jobfile']=outname
  17. outfile=fdopen(outfd,'a+')
  18. print job_workspace
  19.  
  20. proc=Popen((PYTHON_ROOT+" myjob.py").split(),shell=False,stdout=outfile,cwd=job_workspace)
  21. # remember pid to terminate the job later
  22. request.session['job']=proc.pid
  23. print proc.pid
  24. return HttpResponse('A <a href="/showjob/">new job</a> has started.')
  25.  
  26. def showjob(request):
  27. """Show the last result of the running job."""
  28. if not request.session.has_key('job'):
  29. return HttpResponse('Not running a job.'+\
  30. '<a href="/startjob/">Start a new one?</a>')
  31. else:
  32. filename=request.session['jobfile']
  33. results=open(filename)
  34. lines=results.readlines()
  35. try:
  36. return HttpResponse(lines[-1]+\
  37. '<p><a href="/rmjob/">Terminate?</a>')
  38. except:
  39. return HttpResponse('No results yet.'+\
  40. '<p><a href="/rmjob/">Terminate?</a>')
  41. return response
  42.  
  43. def rmjob(request):
  44. """Terminate the runining job."""
  45. if request.session.has_key('job'):
  46. job=request.session['job']
  47. filename=request.session['jobfile']
  48. try:
  49. kill(job,signal.SIGKILL) # unix only
  50. unlink(filename)
  51. except OSError, e:
  52. pass # probably the job has finished already
  53. del request.session['job']
  54. del request.session['jobfile']
  55. return HttpResponseRedirect('/showjob/') # showjob

效果:

django中管理程序1的更多相关文章

  1. django中管理程序2

    升级版 from os import path TASKS_ROOT = path.dirname(path.abspath(path.dirname(__file__))) PYTHON_ROOT ...

  2. 异步任务队列Celery在Django中的使用

    前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...

  3. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  4. Mysql事务探索及其在Django中的实践(一)

    前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...

  5. Django 中url补充以及模板继承

    Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...

  6. django中css问题

    django中加载的css,js,图片其中js和图片可以加载出来,而css没有效果.原因如下: 这是因为你安装的某些IDE 或者其他更改了注册表导致的系统的注册表\HKEY_CLASSES_ROOT\ ...

  7. 在Django中进行注册用户的邮件确认

    之前利用Flask写博客时(http://hbnnlove.sinaapp.com),我对注册模块的逻辑设计很简单,就是用户填写注册表单,然后提交,数据库会更新User表中的数据,字段主要有用户名,哈 ...

  8. django中tinymce添加图片上传功能

    主要参考以下: https://pixabay.com/en/blog/posts/direct-image-uploads-in-tinymce-4-42/ http://blog.csdn.net ...

  9. django中migration文件是干啥的

    昨天很蠢的问leader git push的时候会不会把本地的数据库文件上传上去,意思是django中那些migration文件修改之后会不会上传. 然后得知不会,因为所有的数据库都存在本机的mysq ...

随机推荐

  1. win10子系统Ubuntu18.04下安装图形界面

    前提:windows 10 已经安装WSL(windows subsystem for linux),并能正确运行Bash. 要想使用Linux的图形用户界面通常有两种方法,一种是使用X-Window ...

  2. Vue学习(四):条件渲染

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 使用hibernate连接Oracle时的权限问题

    在使用hibernate对象关系映射连接和创建表的时候,会涉及到很多权限问题,有些数据库管理会将权限设的很细,我们可以根据后台日志错误和异常信息作出判断. 比如下图所示这个错误(这是我在给银行投产系统 ...

  4. Struts2(四.注册时检查用户名是否存在及Action获取数据的三种方式)

    一.功能 1.用户注册页面 <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  5. GraphSAGE 代码解析(三) - aggregators.py

    原创文章-转载请注明出处哦.其他部分内容参见以下链接- GraphSAGE 代码解析(一) - unsupervised_train.py GraphSAGE 代码解析(二) - layers.py ...

  6. DFS(5)——hdu1728逃离迷宫

    一.题目回顾 题目链接:逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地 ...

  7. PAT 1020 月饼

    https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200 月饼是中国人在中秋佳节时吃的一种传统食品,不 ...

  8. (转)mongdb性能优化收集

    一.数据库最大连接数问题当你在后台日志中,发现大量“connection refused because too many open connections: 819”信息时,一般跟你没有设置合适的最 ...

  9. C#怎么调用方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Exep ...

  10. BZOJ4567 SCOI2016背单词(trie+贪心)

    倒过来变成查询前缀.考虑怎么排序.第一条代价n*n就相当于inf,说明一个单词的所有前缀都要排在它前面.那么串的依赖关系就是trie的结构.二三条说明代价是Σidi-idfa,那么显然最后的编号应该是 ...