python urlretrieve下载视频的速度_urllib.urlretrieve 方法下载文件不完整,源文件40mb,下载后之后100kb。...

# coding=utf-8

import subprocess

import urllib

import os

import time

from socket import *

def pid_tomcat():

child = subprocess.Popen(['pgrep', '-f', "tomcat"], stdout=subprocess.PIPE, shell=False)

response = child.communicate()[0]

tomcat = [int(pid) for pid in response.split()]

return tomcat

def Schedule(a,b,c):

'''''

a:已经下载的数据块

b:数据块的大小

c:远程文件的大小

'''

per = 100.0 * a * b / c

if per > 100 :

per = 100

print '%.2f%%' % per

if __name__ == "__main__":

tcpserver = socket(AF_INET, SOCK_STREAM)

# 本地信息绑定

tcpserver.bind(("192.168.128.57", 7788))

# 进行监听

tcpserver.listen(1)

# 客户端接受

while True:

print ("持续监听中...")

newsocket, clientaddr = tcpserver.accept()

recdata = newsocket.recv(1024)

recdata = eval(recdata)

print "接收到的数据为:" + str(recdata)

while True:

pid = pid_tomcat()

try:

tomcat_pid = pid[0]

os.system("kill -9 " + str(tomcat_pid))

except:

break

print("获取到的tomcat的pid为" + str(tomcat_pid))

# 下载新的war包

war_path = '/opt/Tomcat7_nlu/webapps/'

for key in recdata:

url = recdata[key]

war_name = (url.split("/")[-1]).split("-")[0]

print("在url地址中切出来的war包名字为:" + str(war_name))

if ".war" in war_name:

pass

else:

war_name += ".war"

will_del = war_name.split(".")[0]

print("在文件中切出来的关键字为:" + str(will_del))

# 删除掉旧的war包和文件夹

os.system("rm -rf /opt/Tomcat7_nlu/webapps/" + will_del + "*")

# 下载新的war包

download_path = war_path + war_name

urllib.urlretrieve(url, download_path, Schedule)

# 启动tomcat

os.system("/opt/Tomcat7_nlu/bin/startup.sh")

time.sleep(250)

# 操作完成后,给客户端返回信息,让客户端继续执行

newsocket.send("server has been restart!!!")

newsocket.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值