Code cleanup in netrender
This commit is contained in:
@@ -200,14 +200,14 @@ class NetworkRenderEngine(bpy.types.RenderEngine):
|
|||||||
|
|
||||||
|
|
||||||
def render_slave(self, scene):
|
def render_slave(self, scene):
|
||||||
slave.render_slave(self, scene)
|
slave.render_slave(self, scene.network_render)
|
||||||
|
|
||||||
def render_client(self, scene):
|
def render_client(self, scene):
|
||||||
netsettings = scene.network_render
|
netsettings = scene.network_render
|
||||||
self.update_stats("", "Network render client initiation")
|
self.update_stats("", "Network render client initiation")
|
||||||
|
|
||||||
|
|
||||||
conn = clientConnection(scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
# Sending file
|
# Sending file
|
||||||
|
|||||||
@@ -36,8 +36,9 @@ class RENDER_OT_netclientanim(bpy.types.Operator):
|
|||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
|
netsettings = scene.network_render
|
||||||
|
|
||||||
conn = clientConnection(scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
# Sending file
|
# Sending file
|
||||||
@@ -62,8 +63,9 @@ class RENDER_OT_netclientsend(bpy.types.Operator):
|
|||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
|
netsettings = scene.network_render
|
||||||
|
|
||||||
conn = clientConnection(scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
# Sending file
|
# Sending file
|
||||||
@@ -86,7 +88,7 @@ class RENDER_OT_netclientstatus(bpy.types.Operator):
|
|||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
netsettings = context.scene.network_render
|
netsettings = context.scene.network_render
|
||||||
conn = clientConnection(context.scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
conn.request("GET", "/status")
|
conn.request("GET", "/status")
|
||||||
@@ -187,7 +189,7 @@ class RENDER_OT_netclientslaves(bpy.types.Operator):
|
|||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
netsettings = context.scene.network_render
|
netsettings = context.scene.network_render
|
||||||
conn = clientConnection(context.scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
conn.request("GET", "/slaves")
|
conn.request("GET", "/slaves")
|
||||||
@@ -233,7 +235,7 @@ class RENDER_OT_netclientcancel(bpy.types.Operator):
|
|||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
netsettings = context.scene.network_render
|
netsettings = context.scene.network_render
|
||||||
conn = clientConnection(context.scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
job = bpy.netrender_jobs[netsettings.active_job_index]
|
job = bpy.netrender_jobs[netsettings.active_job_index]
|
||||||
@@ -261,7 +263,7 @@ class RENDER_OT_netclientcancelall(bpy.types.Operator):
|
|||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
netsettings = context.scene.network_render
|
netsettings = context.scene.network_render
|
||||||
conn = clientConnection(context.scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
conn.request("POST", "/clear")
|
conn.request("POST", "/clear")
|
||||||
@@ -291,7 +293,7 @@ class netclientdownload(bpy.types.Operator):
|
|||||||
netsettings = context.scene.network_render
|
netsettings = context.scene.network_render
|
||||||
rd = context.scene.render_data
|
rd = context.scene.render_data
|
||||||
|
|
||||||
conn = clientConnection(context.scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
job = bpy.netrender_jobs[netsettings.active_job_index]
|
job = bpy.netrender_jobs[netsettings.active_job_index]
|
||||||
@@ -332,26 +334,16 @@ class netclientscan(bpy.types.Operator):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
netsettings = context.scene.network_render
|
address, port = clientScan()
|
||||||
|
|
||||||
try:
|
if address:
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
scene = context.scene
|
||||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
netsettings = scene.network_render
|
||||||
s.settimeout(30)
|
netsettings.server_address = address
|
||||||
|
netsettings.server_port = port
|
||||||
s.bind(('', 8000))
|
|
||||||
|
|
||||||
buf, address = s.recvfrom(64)
|
|
||||||
|
|
||||||
print("received:", buf)
|
|
||||||
|
|
||||||
netsettings.server_address = address[0]
|
|
||||||
netsettings.server_port = int(str(buf, encoding='utf8'))
|
|
||||||
except socket.timeout:
|
|
||||||
print("no server info")
|
|
||||||
|
|
||||||
return ('FINISHED',)
|
return ('FINISHED',)
|
||||||
|
|
||||||
def invoke(self, context, event):
|
def invoke(self, context, event):
|
||||||
return self.execute(context)
|
return self.execute(context)
|
||||||
|
|
||||||
@@ -369,7 +361,7 @@ class netclientweb(bpy.types.Operator):
|
|||||||
|
|
||||||
|
|
||||||
# open connection to make sure server exists
|
# open connection to make sure server exists
|
||||||
conn = clientConnection(context.scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ import subprocess, time
|
|||||||
from netrender.utils import *
|
from netrender.utils import *
|
||||||
import netrender.model
|
import netrender.model
|
||||||
|
|
||||||
|
BLENDER_PATH = sys.argv[0]
|
||||||
|
|
||||||
CANCEL_POLL_SPEED = 2
|
CANCEL_POLL_SPEED = 2
|
||||||
MAX_TIMEOUT = 10
|
MAX_TIMEOUT = 10
|
||||||
INCREMENT_TIMEOUT = 1
|
INCREMENT_TIMEOUT = 1
|
||||||
@@ -85,13 +87,12 @@ def testFile(conn, job_id, slave_id, JOB_PREFIX, file_path, main_path = None):
|
|||||||
return job_full_path
|
return job_full_path
|
||||||
|
|
||||||
|
|
||||||
def render_slave(engine, scene):
|
def render_slave(engine, netsettings):
|
||||||
netsettings = scene.network_render
|
|
||||||
timeout = 1
|
timeout = 1
|
||||||
|
|
||||||
engine.update_stats("", "Network render node initiation")
|
engine.update_stats("", "Network render node initiation")
|
||||||
|
|
||||||
conn = clientConnection(scene)
|
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||||
|
|
||||||
if conn:
|
if conn:
|
||||||
conn.request("POST", "/slave", repr(slave_Info().serialize()))
|
conn.request("POST", "/slave", repr(slave_Info().serialize()))
|
||||||
@@ -150,7 +151,7 @@ def render_slave(engine, scene):
|
|||||||
frame_args += ["-f", str(frame.number)]
|
frame_args += ["-f", str(frame.number)]
|
||||||
|
|
||||||
val = SetErrorMode()
|
val = SetErrorMode()
|
||||||
process = subprocess.Popen([sys.argv[0], "-b", job_full_path, "-o", JOB_PREFIX + "######", "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
process = subprocess.Popen([BLENDER_PATH, "-b", job_full_path, "-o", JOB_PREFIX + "######", "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
RestoreErrorMode(val)
|
RestoreErrorMode(val)
|
||||||
elif job.type == netrender.model.JOB_PROCESS:
|
elif job.type == netrender.model.JOB_PROCESS:
|
||||||
command = job.frames[0].command
|
command = job.frames[0].command
|
||||||
@@ -240,3 +241,6 @@ def render_slave(engine, scene):
|
|||||||
return
|
return
|
||||||
|
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
pass
|
||||||
@@ -16,14 +16,18 @@
|
|||||||
#
|
#
|
||||||
# ##### END GPL LICENSE BLOCK #####
|
# ##### END GPL LICENSE BLOCK #####
|
||||||
|
|
||||||
import bpy
|
|
||||||
import sys, os
|
import sys, os
|
||||||
import re
|
import re
|
||||||
import http, http.client, http.server, urllib
|
import http, http.client, http.server, urllib, socket
|
||||||
import subprocess, shutil, time, hashlib
|
import subprocess, shutil, time, hashlib
|
||||||
|
|
||||||
import netrender.model
|
import netrender.model
|
||||||
|
|
||||||
|
try:
|
||||||
|
import bpy
|
||||||
|
except:
|
||||||
|
bpy = None
|
||||||
|
|
||||||
VERSION = b"0.5"
|
VERSION = b"0.5"
|
||||||
|
|
||||||
# Jobs status
|
# Jobs status
|
||||||
@@ -39,27 +43,47 @@ DONE = 2
|
|||||||
ERROR = 3
|
ERROR = 3
|
||||||
|
|
||||||
STATUS_TEXT = {
|
STATUS_TEXT = {
|
||||||
QUEUED: "Queued",
|
QUEUED: "Queued",
|
||||||
DISPATCHED: "Dispatched",
|
DISPATCHED: "Dispatched",
|
||||||
DONE: "Done",
|
DONE: "Done",
|
||||||
ERROR: "Error"
|
ERROR: "Error"
|
||||||
}
|
}
|
||||||
|
|
||||||
def rnaType(rna_type):
|
def rnaType(rna_type):
|
||||||
bpy.types.register(rna_type)
|
if bpy: bpy.types.register(rna_type)
|
||||||
return rna_type
|
return rna_type
|
||||||
|
|
||||||
def rnaOperator(rna_op):
|
def rnaOperator(rna_op):
|
||||||
bpy.ops.add(rna_op)
|
if bpy: bpy.ops.add(rna_op)
|
||||||
return rna_op
|
return rna_op
|
||||||
|
|
||||||
def clientConnection(scene):
|
def clientScan():
|
||||||
netsettings = scene.network_render
|
try:
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
||||||
|
s.settimeout(30)
|
||||||
|
|
||||||
|
s.bind(('', 8000))
|
||||||
|
|
||||||
if netsettings.server_address == "[default]":
|
buf, address = s.recvfrom(64)
|
||||||
bpy.ops.render.netclientscan()
|
|
||||||
|
|
||||||
conn = http.client.HTTPConnection(netsettings.server_address, netsettings.server_port)
|
print("received:", buf)
|
||||||
|
|
||||||
|
address = address[0]
|
||||||
|
port = int(str(buf, encoding='utf8'))
|
||||||
|
return (address, port)
|
||||||
|
except socket.timeout:
|
||||||
|
print("no server info")
|
||||||
|
return ("", 8000) # return default values
|
||||||
|
|
||||||
|
def clientConnection(address, port):
|
||||||
|
if address == "[default]":
|
||||||
|
if bpy:
|
||||||
|
bpy.ops.render.netclientscan()
|
||||||
|
else:
|
||||||
|
address, port = clientScan()
|
||||||
|
|
||||||
|
conn = http.client.HTTPConnection(address, port)
|
||||||
|
|
||||||
if clientVerifyVersion(conn):
|
if clientVerifyVersion(conn):
|
||||||
return conn
|
return conn
|
||||||
|
|||||||
Reference in New Issue
Block a user