问题描述:服务器是32位的,所以python会出现memoryerror的问题,由于没有办法短期内更换到64位系统,所以就只能用这个办法,把服务定时重启,让内存不会溢出
用到了批处理
之前用的是 subprocess .kill 出现杀不掉的情况
问题出在kill的是cmd命令,而不是python执行后的结果
所以需要根据占用端口,获取真正的python-django的pid
@echo off kill8000.bat
set port=8000
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr "0.0.0.0:%port%"') do (
echo kill the process %%m who use the port %port%
taskkill /F /pid %%m
)
#encoding:utf-8
import os
import subprocess
import time
from multiprocessing import Process
def main():
while True:
p = subprocess.Popen("python manage.py runserver 0.0.0.0:8000 ")
#p=os.system("python manage.py runserver 0.0.0.0:8000")
time.sleep(60*60*3)
#p.terminate()
#cmd = "taskkill /F /pid:"+str(p.pid)
cmd="kill8000.bat"
os.system(cmd)
main()