断点续传

This commit is contained in:
Jerry Yan 2019-04-16 21:21:45 +08:00 committed by JerryYan
parent 035e71185a
commit a9ecd1e7ab
2 changed files with 34 additions and 10 deletions

View File

@ -42,15 +42,20 @@ def getTimeDelta(a, b):
return sec+(ms/100000.0) return sec+(ms/100000.0)
def getCurrentStatus(): def doClean():
global _do_move_time global _do_move_time
_disk = psutil.disk_usage("/")
if _disk.percent > config["max"] and getTimeDelta(datetime.now(), _do_move_time) > 3600:
_do_move_time = datetime.now()
os.system(config["dow"])
def getCurrentStatus():
_disk = psutil.disk_usage("/") _disk = psutil.disk_usage("/")
_mem = psutil.virtual_memory() _mem = psutil.virtual_memory()
_net = psutil.net_io_counters() _net = psutil.net_io_counters()
_delta= getTimeDelta(datetime.now(),network["currentTime"]) _delta= getTimeDelta(datetime.now(),network["currentTime"])
if _disk.percent > config["max"] and getTimeDelta(datetime.now(), _do_move_time) > 3600:
_do_move_time = datetime.now()
os.system(config["dow"])
if 60 > _delta > 0: if 60 > _delta > 0:
_inSpeed = (_net.bytes_recv - network["in"]["currentByte"])/_delta _inSpeed = (_net.bytes_recv - network["in"]["currentByte"])/_delta
_outSpeed = (_net.bytes_sent - network["out"]["currentByte"])/_delta _outSpeed = (_net.bytes_sent - network["out"]["currentByte"])/_delta

View File

@ -7,7 +7,7 @@ import Common
import threading import threading
from liveDownloader import run as RUN from liveDownloader import run as RUN
app = Flask("liveStatus") app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False app.config['JSON_AS_ASCII'] = False
CORS(app, supports_credentials=True) CORS(app, supports_credentials=True)
# url_for('static', filename='index.html') # url_for('static', filename='index.html')
@ -187,12 +187,28 @@ def fileIndex():
@app.route("/files/download/<path>", methods=["GET"]) @app.route("/files/download/<path>", methods=["GET"])
def fileDownload(path): def fileDownload(path):
def generate(file): def generate(file, offset=0):
with open(file, "rb") as f: with open(file, "rb") as f:
f.seek(offset)
for row in f: for row in f:
yield row yield row
if os.path.exists(path): if os.path.exists(path):
return Response(generate(path), mimetype='application/octet-stream') if "RANGE" in request.headers:
offset = int(request.headers["RANGE"].replace("=","-").split("-")[1].strip())
code = 206
else:
offset = 0
code = 200
return Response(generate(path, offset),
status=code,
mimetype='application/octet-stream',
headers={
"Content-Length": os.path.getsize(path)-1-offset,
"Content-Range": "bytes {}-{}/{}".format(offset,os.path.getsize(path)-1,os.path.getsize(path)),
"Accept-Ranges": "bytes",
"Range": "bytes",
"Content-Disposition": "attachment; filename={}".format(path),
})
else: else:
return Response(status=404) return Response(status=404)
@ -210,6 +226,9 @@ def SubThread():
t.start() t.start()
p = threading.Thread(target=SubThread) # p = threading.Thread(target=SubThread)
p.setDaemon(True) # p.setDaemon(True)
p.start() # p.start()
if __name__ == "__main__":
app.run()