forked from bartvdbraak/blender
NetRender tweaks by Brecht
* Client connection is made from panel poll functions even if netrender is disabled * Network render slave should print when it has connected to server, now it says "node initiation", I initially thought this meant it was not connected yet. * Web interface should auto-refresh, I got confused if job and slaves were actually found or not.
This commit is contained in:
parent
fd15ba060b
commit
061a306d66
@ -190,6 +190,11 @@ pause_pattern = re.compile("/pause_([a-zA-Z0-9]+)")
|
||||
edit_pattern = re.compile("/edit_([a-zA-Z0-9]+)")
|
||||
|
||||
class RenderHandler(http.server.BaseHTTPRequestHandler):
|
||||
def log_message(self, format, *args):
|
||||
# override because the original calls self.address_string(), which
|
||||
# is extremely slow due to some timeout..
|
||||
sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format%args))
|
||||
|
||||
def send_head(self, code = http.client.OK, headers = {}, content = "application/octet-stream"):
|
||||
self.send_response(code)
|
||||
self.send_header("Content-type", content)
|
||||
@ -1010,7 +1015,7 @@ def runMaster(address, broadcast, clear, path, update_stats, test_break):
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
||||
|
||||
start_time = time.time()
|
||||
start_time = time.time() - 2
|
||||
|
||||
while not test_break():
|
||||
try:
|
||||
@ -1018,7 +1023,7 @@ def runMaster(address, broadcast, clear, path, update_stats, test_break):
|
||||
except select.error:
|
||||
pass
|
||||
|
||||
if time.time() - start_time >= 10: # need constant here
|
||||
if time.time() - start_time >= 2: # need constant here
|
||||
httpd.timeoutSlaves()
|
||||
|
||||
httpd.updateUsage()
|
||||
@ -1031,3 +1036,4 @@ def runMaster(address, broadcast, clear, path, update_stats, test_break):
|
||||
httpd.server_close()
|
||||
if clear:
|
||||
clearMaster(httpd.path)
|
||||
|
||||
|
@ -29,6 +29,7 @@ def get(handler):
|
||||
|
||||
def head(title):
|
||||
output("<html><head>")
|
||||
output("<meta http-equiv='refresh' content=5>")
|
||||
output("<script src='/html/netrender.js' type='text/javascript'></script>")
|
||||
# output("<script src='/html/json2.js' type='text/javascript'></script>")
|
||||
output("<title>")
|
||||
|
@ -105,6 +105,8 @@ def render_slave(engine, netsettings, threads):
|
||||
if not os.path.exists(NODE_PREFIX):
|
||||
os.mkdir(NODE_PREFIX)
|
||||
|
||||
engine.update_stats("", "Network render connected to master, waiting for jobs")
|
||||
|
||||
while not engine.test_break():
|
||||
conn.request("GET", "/job", headers={"slave-id":slave_id})
|
||||
response = conn.getresponse()
|
||||
@ -113,6 +115,7 @@ def render_slave(engine, netsettings, threads):
|
||||
timeout = 1 # reset timeout on new job
|
||||
|
||||
job = netrender.model.RenderJob.materialize(eval(str(response.read(), encoding='utf8')))
|
||||
engine.update_stats("", "Network render processing job from master")
|
||||
|
||||
JOB_PREFIX = NODE_PREFIX + "job_" + job.id + os.sep
|
||||
if not os.path.exists(JOB_PREFIX):
|
||||
@ -245,6 +248,8 @@ def render_slave(engine, netsettings, threads):
|
||||
conn.request("PUT", "/render", headers=headers)
|
||||
if conn.getresponse().status == http.client.NO_CONTENT:
|
||||
continue
|
||||
|
||||
engine.update_stats("", "Network render connected to master, waiting for jobs")
|
||||
else:
|
||||
if timeout < MAX_TIMEOUT:
|
||||
timeout += INCREMENT_TIMEOUT
|
||||
|
@ -213,9 +213,10 @@ class RENDER_PT_network_slaves(RenderButtonsPanel):
|
||||
def poll(self, context):
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
if netsettings.mode != "RENDER_CLIENT":
|
||||
return False
|
||||
verify_address(netsettings)
|
||||
return (super().poll(context)
|
||||
and netsettings.mode == "RENDER_CLIENT"
|
||||
and netsettings.server_address != "[default]")
|
||||
|
||||
def draw(self, context):
|
||||
@ -251,9 +252,10 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel):
|
||||
def poll(self, context):
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
if netsettings.mode != "RENDER_CLIENT":
|
||||
return False
|
||||
verify_address(netsettings)
|
||||
return (super().poll(context)
|
||||
and netsettings.mode == "RENDER_CLIENT"
|
||||
and netsettings.server_address != "[default]")
|
||||
|
||||
def draw(self, context):
|
||||
@ -288,9 +290,10 @@ class RENDER_PT_network_jobs(RenderButtonsPanel):
|
||||
def poll(self, context):
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
if netsettings.mode != "RENDER_CLIENT":
|
||||
return False
|
||||
verify_address(netsettings)
|
||||
return (super().poll(context)
|
||||
and netsettings.mode == "RENDER_CLIENT"
|
||||
and netsettings.server_address != "[default]")
|
||||
|
||||
def draw(self, context):
|
||||
|
Loading…
Reference in New Issue
Block a user