From cfb12a23b729e98624501394dd1013d002da983c Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 7 Aug 2011 15:26:25 +0000 Subject: netrender fix for master receiving files Based on patch [#28108] by Wintch Analyzer --- netrender/master.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'netrender') diff --git a/netrender/master.py b/netrender/master.py index 91e610ea..e3c7399e 100644 --- a/netrender/master.py +++ b/netrender/master.py @@ -201,6 +201,14 @@ pause_pattern = re.compile("/pause_([a-zA-Z0-9]+)") edit_pattern = re.compile("/edit_([a-zA-Z0-9]+)") class RenderHandler(http.server.BaseHTTPRequestHandler): + def write_file(self, file_path, mode = 'wb'): + length = int(self.headers['content-length']) + f = open(file_path, mode) + buf = self.rfile.read(length) + f.write(buf) + f.close() + del buf + def log_message(self, format, *args): # override because the original calls self.address_string(), which # is extremely slow due to some timeout.. @@ -697,6 +705,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): if match: self.server.stats("", "Receiving job") + length = int(self.headers['content-length']) job_id = match.groups()[0] file_index = int(match.groups()[1]) @@ -718,10 +727,8 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): # add same temp file + renames as slave - f = open(file_path, "wb") - shutil.copyfileobj(self.rfile, f) - f.close() - + self.write_file(file_path) + render_file.filepath = file_path # set the new path if job.testStart(): @@ -764,9 +771,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): if job.hasRenderResult(): if job_result == DONE: - f = open(os.path.join(job.save_path, "%06d.exr" % job_frame), 'wb') - shutil.copyfileobj(self.rfile, f) - f.close() + self.write_file(os.path.join(job.save_path, "%06d.exr" % job_frame)) elif job_result == ERROR: # blacklist slave on this job on error @@ -809,9 +814,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): self.send_head(content = None) if job.hasRenderResult(): - f = open(os.path.join(job.save_path, "%06d.jpg" % job_frame), 'wb') - shutil.copyfileobj(self.rfile, f) - f.close() + os.path.join(os.path.join(job.save_path, "%06d.jpg" % job_frame)) else: # frame not found self.send_head(http.client.NO_CONTENT) @@ -838,9 +841,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): if frame and frame.log_path: self.send_head(content = None) - f = open(frame.log_path, 'ab') - shutil.copyfileobj(self.rfile, f) - f.close() + self.write_file(frame.log_path, 'ab') self.server.getSeenSlave(self.headers['slave-id']) -- cgit v1.2.3