принудительное завершение всего
parent
0e81ccf6bc
commit
228714810a
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import chardet
|
||||
|
@ -303,7 +302,6 @@ class TorrentFS(object):
|
|||
return self.files[name]
|
||||
file_ = self.__file_at_(index)
|
||||
self.files[file_.name] = file_
|
||||
#self.handle.set_piece_deadline(self.files[startIndex].startPiece, 50)
|
||||
self.setPriority(index, 1)
|
||||
return file_
|
||||
|
||||
|
@ -435,7 +433,7 @@ def HttpHandlerFactory():
|
|||
buf = create_string_buffer(chunk)
|
||||
else:
|
||||
buf = bytearray(chunk)
|
||||
while chunk > 0:
|
||||
while chunk > 0 and not self.server.root_obj.forceShutdown:
|
||||
if start_range + chunk > end_range:
|
||||
chunk = end_range - start_range
|
||||
if os.getenv('ANDROID_ROOT'):
|
||||
|
@ -444,7 +442,7 @@ def HttpHandlerFactory():
|
|||
buf = bytearray(chunk)
|
||||
try:
|
||||
if f.Read(buf) < 1: break
|
||||
while self.server.root_obj.pause:
|
||||
while self.server.root_obj.pause and not self.server.root_obj.forceShutdown:
|
||||
time.sleep(0.1)
|
||||
continue
|
||||
if os.getenv('ANDROID_ROOT'):
|
||||
|
@ -523,7 +521,6 @@ class Pyrrent2http(object):
|
|||
self.config.bindAddress = bindAddress
|
||||
self.config.downloadPath = downloadPath
|
||||
self.config.idleTimeout = idleTimeout
|
||||
#self.config.fileIndex = fileIndex
|
||||
self.config.keepComplete = keepComplete
|
||||
self.config.keepIncomplete = keepIncomplete
|
||||
self.config.keepFiles = keepFiles
|
||||
|
@ -624,30 +621,21 @@ class Pyrrent2http(object):
|
|||
self.TorrentFS = TorrentFS(self, self.torrentHandle)
|
||||
except Exception as e:
|
||||
logging.error(e.args)
|
||||
#_ = self.TorrentFS.file(self.config.fileIndex)
|
||||
name = self.TorrentFS.info.name()
|
||||
self.torrent_name = name.decode(chardet.detect(name)['encoding'])
|
||||
|
||||
def startHTTP(self):
|
||||
#def http_server_loop(listener, alive):
|
||||
# while alive.is_set():
|
||||
# print('+++handle request+++')
|
||||
# listener.handle_request()
|
||||
# listener.server_close()
|
||||
#self.main_alive = threading.Event()
|
||||
#self.main_alive.set()
|
||||
logging.info('Starting HTTP Server...')
|
||||
handler = HttpHandlerFactory()
|
||||
handler.protocol_version = 'HTTP/1.1'
|
||||
logging.info('Listening HTTP on %s...\n' % (self.config.bindAddress,))
|
||||
host, strport = self.config.bindAddress.split(':')
|
||||
if len(strport) > 0:
|
||||
srv_port = int(strport)
|
||||
self.httpListener = ThreadingHTTPServer((host, srv_port), handler)
|
||||
self.httpListener.root_obj = self
|
||||
#self.httpListener.timeout = 0.5
|
||||
#thread = threading.Thread(target = http_server_loop, args = (self.httpListener, self.main_alive))
|
||||
thread = threading.Thread(target = self.httpListener.serve_forever)
|
||||
thread.start()
|
||||
self.listener_thread = threading.Thread(target = self.httpListener.serve_forever)
|
||||
self.listener_thread.start()
|
||||
|
||||
def startServices(self):
|
||||
if self.config.enableDHT:
|
||||
|
@ -757,8 +745,6 @@ class Pyrrent2http(object):
|
|||
|
||||
def Status(self):
|
||||
info = self.TorrentFS.info
|
||||
#tstatus = self.torrentHandle.status()
|
||||
#tstatus = self.TorrentFS.handle.status()
|
||||
tstatus = self.torrentHandle.status()
|
||||
|
||||
status = {
|
||||
|
@ -814,35 +800,6 @@ class Pyrrent2http(object):
|
|||
}
|
||||
peers['peers'].append(pi)
|
||||
return peers
|
||||
'''def stats(self):
|
||||
status = self.torrentHandle.status()
|
||||
dhtStatusStr = ''
|
||||
if not status.has_metadata:
|
||||
return
|
||||
if self.config.showAllStats or self.config.showOverallProgress:
|
||||
sessionStatus = self.session.status()
|
||||
if self.session.is_dht_running():
|
||||
dhtStatusStr = ', DHT nodes: %d' % (sessionStatus.dht_nodes,)
|
||||
errorStr = ''
|
||||
if len(status.error) > 0:
|
||||
errorStr = ' (%s)' % (status.error,)
|
||||
logging.info('%s, overall progress: %.2f%%, dl/ul: %.3f/%.3f kbps, peers/seeds: %d/%d' % (
|
||||
str(status.state),
|
||||
status.progress * 100,
|
||||
float(status.download_rate)/1024,
|
||||
float(status.upload_rate)/1024,
|
||||
status.num_peers,
|
||||
status.num_seeds
|
||||
) + dhtStatusStr + errorStr
|
||||
)
|
||||
if self.config.showFilesProgress or self.config.showAllStats:
|
||||
str_ = 'Files: '
|
||||
for i, f in enumerate(self.TorrentFS.files):
|
||||
str_ += '[%d] %.2f%% ' % (i, f.Progress()*100)
|
||||
logging.info(str_)
|
||||
if (self.config.showPiecesProgress or self.config.showAllStats) and self.TorrentFS.lastOpenedFile != None:
|
||||
self.TorrentFS.lastOpenedFile.ShowPieces()
|
||||
'''
|
||||
def consumeAlerts(self):
|
||||
alerts = self.session.pop_alerts()
|
||||
for alert in alerts:
|
||||
|
@ -860,7 +817,6 @@ class Pyrrent2http(object):
|
|||
if type(alert) == alert_type:
|
||||
return alert
|
||||
def loop(self):
|
||||
#self.statsTicker = Ticker(30)
|
||||
self.saveResumeDataTicker = Ticker(5)
|
||||
time_start = time.time()
|
||||
while True:
|
||||
|
@ -875,8 +831,6 @@ class Pyrrent2http(object):
|
|||
if os.getppid() == 1:
|
||||
self.forceShutdown = True
|
||||
time_start = time.time()
|
||||
#if self.statsTicker.true:
|
||||
# self.stats()
|
||||
if self.saveResumeDataTicker.true:
|
||||
self.saveResumeData(True)
|
||||
time.sleep(0.3)
|
||||
|
@ -956,9 +910,9 @@ class Pyrrent2http(object):
|
|||
def shutdown(self):
|
||||
logging.info('Stopping pyrrent2http...')
|
||||
self.forceShutdown = True
|
||||
#self.statsTicker.stop()
|
||||
self.saveResumeDataTicker.stop()
|
||||
self.httpListener.shutdown()
|
||||
self.httpListener.socket.close()
|
||||
self.TorrentFS.Shutdown()
|
||||
if self.session != None:
|
||||
self.session.pause()
|
||||
|
@ -968,5 +922,5 @@ class Pyrrent2http(object):
|
|||
self.saveSessionState()
|
||||
self.removeTorrent()
|
||||
logging.info('Aborting the session')
|
||||
del self.session
|
||||
self.session = None
|
||||
logging.info('Bye bye')
|
||||
|
|
Loading…
Reference in New Issue