[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2230] trunk/py/scripts/addons/ netrender/master.py: netrender fix for master receiving files

Martin Poirier theeth at yahoo.com
Sun Aug 7 17:26:25 CEST 2011


Revision: 2230
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2230
Author:   theeth
Date:     2011-08-07 15:26:25 +0000 (Sun, 07 Aug 2011)
Log Message:
-----------
netrender fix for master receiving files

Based on patch [#28108] by Wintch Analyzer

Modified Paths:
--------------
    trunk/py/scripts/addons/netrender/master.py

Modified: trunk/py/scripts/addons/netrender/master.py
===================================================================
--- trunk/py/scripts/addons/netrender/master.py	2011-08-07 13:30:42 UTC (rev 2229)
+++ trunk/py/scripts/addons/netrender/master.py	2011-08-07 15:26:25 UTC (rev 2230)
@@ -201,6 +201,14 @@
 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 @@
             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 @@
 
                         # 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 @@
 
                         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 @@
                         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 @@
                     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'])
 



More information about the Bf-extensions-cvs mailing list