bug filewrite

This commit is contained in:
2020-04-08 22:37:54 +08:00
parent 502da86feb
commit e58a4a429e
2 changed files with 20 additions and 4 deletions

View File

@@ -45,6 +45,7 @@ class Ffmpeg_controller:
self.object_filename = None
self.concat = True
self.pause = False
self.autostart = False
self.tasklist = []
self.convert_task_thread = threading.Thread(target=self.convert_task_func, args=())
@@ -57,6 +58,7 @@ class Ffmpeg_controller:
_create_floder('res/ffmpeg_tmp')
_create_floder('res/ffmpeg_finished')
_create_floder('res/ffmpeg_task')
_create_floder('res/ffmpeg_old')
_create_floder('res/ffmpeg_complet')
while True:
@@ -79,6 +81,7 @@ class Ffmpeg_controller:
dp.app = 'ffmpeg'
dp.body = b'start'
dp.head['filename'] = self.tasklist.pop(0)
self.autostart = dp.head['filename']
send_queue.put(dp)
if dp.method == 'post' and dp.body == b'start': # config ffmpeg is server or client
@@ -160,6 +163,10 @@ class Ffmpeg_controller:
pass
os.remove('res/ffmpeg_finished/filelist.txt')
if self.autostart:
os.rename(self.autostart, self.autostart.replace('ffmpeg_task', 'ffmpeg_old'))
self.autostart = None
def run_as_server(self):
_padding_to_convert = os.listdir('res/ffmpeg_tmp')
@@ -183,6 +190,10 @@ class Ffmpeg_controller:
ndp.body = result.encode()
send_queue.put(ndp)
elif dp.method == 'post' and dp.body == b'reset':
padding_to_convert = already_in_convert
already_in_convert = []
elif dp.method == 'post' and dp.body == b'stop':
break

View File

@@ -356,6 +356,7 @@ class Connection:
self.netowrk_controller = netowrk_controller
self.id = None
self.flag = None
self.f = None
self.buff = b''
self.padding_queue = queue.Queue()
self.thread_send = None
@@ -414,6 +415,7 @@ class Connection:
if dp.method == 'file':
create_floder(dp.head['filename'])
create_floder('tmp/' + dp.head['filename'])
self.f = open('tmp/' + dp.head['filename'], 'ab')
if dp.method == 'file' and os.path.exists(dp.head['filename']):
os.remove(dp.head['filename'])
@@ -428,8 +430,7 @@ class Connection:
if still_need > len(self.buff):
# writing tmp data
if dp.method == 'file':
with open('tmp/' + dp.head['filename'], 'ab') as f:
still_need -= f.write(self.buff)
still_need -= self.f.write(self.buff)
else:
dp.body += self.buff
still_need -= len(self.buff)
@@ -437,8 +438,9 @@ class Connection:
else: # download complete setuation
if dp.method == 'file':
with open('tmp/' + dp.head['filename'], 'ab') as f:
f.write(self.buff[:still_need])
self.f.write(self.buff[:still_need])
self.f.close()
self.f = None
else:
dp.body = self.buff[:still_need]
self.buff = self.buff[still_need:]
@@ -452,6 +454,9 @@ class Connection:
# below code are using to closed connection
if self.f:
self.f.close()
self.f = None
self.conn.close()
self.netowrk_controller.del_connection(self)