Code cleanup in netrender
This commit is contained in:
@@ -200,14 +200,14 @@ class NetworkRenderEngine(bpy.types.RenderEngine):
|
||||
|
||||
|
||||
def render_slave(self, scene):
|
||||
slave.render_slave(self, scene)
|
||||
slave.render_slave(self, scene.network_render)
|
||||
|
||||
def render_client(self, scene):
|
||||
netsettings = scene.network_render
|
||||
self.update_stats("", "Network render client initiation")
|
||||
|
||||
|
||||
conn = clientConnection(scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
# Sending file
|
||||
|
||||
@@ -36,8 +36,9 @@ class RENDER_OT_netclientanim(bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
|
||||
conn = clientConnection(scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
# Sending file
|
||||
@@ -62,8 +63,9 @@ class RENDER_OT_netclientsend(bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
|
||||
conn = clientConnection(scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
# Sending file
|
||||
@@ -86,7 +88,7 @@ class RENDER_OT_netclientstatus(bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
netsettings = context.scene.network_render
|
||||
conn = clientConnection(context.scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
conn.request("GET", "/status")
|
||||
@@ -187,7 +189,7 @@ class RENDER_OT_netclientslaves(bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
netsettings = context.scene.network_render
|
||||
conn = clientConnection(context.scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
conn.request("GET", "/slaves")
|
||||
@@ -233,7 +235,7 @@ class RENDER_OT_netclientcancel(bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
netsettings = context.scene.network_render
|
||||
conn = clientConnection(context.scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
job = bpy.netrender_jobs[netsettings.active_job_index]
|
||||
@@ -261,7 +263,7 @@ class RENDER_OT_netclientcancelall(bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
netsettings = context.scene.network_render
|
||||
conn = clientConnection(context.scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
conn.request("POST", "/clear")
|
||||
@@ -291,7 +293,7 @@ class netclientdownload(bpy.types.Operator):
|
||||
netsettings = context.scene.network_render
|
||||
rd = context.scene.render_data
|
||||
|
||||
conn = clientConnection(context.scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
job = bpy.netrender_jobs[netsettings.active_job_index]
|
||||
@@ -332,26 +334,16 @@ class netclientscan(bpy.types.Operator):
|
||||
return True
|
||||
|
||||
def execute(self, context):
|
||||
netsettings = context.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))
|
||||
|
||||
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")
|
||||
address, port = clientScan()
|
||||
|
||||
if address:
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings.server_address = address
|
||||
netsettings.server_port = port
|
||||
|
||||
return ('FINISHED',)
|
||||
|
||||
|
||||
def invoke(self, context, event):
|
||||
return self.execute(context)
|
||||
|
||||
@@ -369,7 +361,7 @@ class netclientweb(bpy.types.Operator):
|
||||
|
||||
|
||||
# open connection to make sure server exists
|
||||
conn = clientConnection(context.scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
conn.close()
|
||||
|
||||
@@ -23,6 +23,8 @@ import subprocess, time
|
||||
from netrender.utils import *
|
||||
import netrender.model
|
||||
|
||||
BLENDER_PATH = sys.argv[0]
|
||||
|
||||
CANCEL_POLL_SPEED = 2
|
||||
MAX_TIMEOUT = 10
|
||||
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
|
||||
|
||||
|
||||
def render_slave(engine, scene):
|
||||
netsettings = scene.network_render
|
||||
def render_slave(engine, netsettings):
|
||||
timeout = 1
|
||||
|
||||
engine.update_stats("", "Network render node initiation")
|
||||
|
||||
conn = clientConnection(scene)
|
||||
conn = clientConnection(netsettings.server_address, netsettings.server_port)
|
||||
|
||||
if conn:
|
||||
conn.request("POST", "/slave", repr(slave_Info().serialize()))
|
||||
@@ -150,7 +151,7 @@ def render_slave(engine, scene):
|
||||
frame_args += ["-f", str(frame.number)]
|
||||
|
||||
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)
|
||||
elif job.type == netrender.model.JOB_PROCESS:
|
||||
command = job.frames[0].command
|
||||
@@ -240,3 +241,6 @@ def render_slave(engine, scene):
|
||||
return
|
||||
|
||||
conn.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass
|
||||
@@ -16,14 +16,18 @@
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
import bpy
|
||||
import sys, os
|
||||
import re
|
||||
import http, http.client, http.server, urllib
|
||||
import http, http.client, http.server, urllib, socket
|
||||
import subprocess, shutil, time, hashlib
|
||||
|
||||
import netrender.model
|
||||
|
||||
try:
|
||||
import bpy
|
||||
except:
|
||||
bpy = None
|
||||
|
||||
VERSION = b"0.5"
|
||||
|
||||
# Jobs status
|
||||
@@ -39,27 +43,47 @@ DONE = 2
|
||||
ERROR = 3
|
||||
|
||||
STATUS_TEXT = {
|
||||
QUEUED: "Queued",
|
||||
DISPATCHED: "Dispatched",
|
||||
DONE: "Done",
|
||||
ERROR: "Error"
|
||||
}
|
||||
QUEUED: "Queued",
|
||||
DISPATCHED: "Dispatched",
|
||||
DONE: "Done",
|
||||
ERROR: "Error"
|
||||
}
|
||||
|
||||
def rnaType(rna_type):
|
||||
bpy.types.register(rna_type)
|
||||
if bpy: bpy.types.register(rna_type)
|
||||
return rna_type
|
||||
|
||||
def rnaOperator(rna_op):
|
||||
bpy.ops.add(rna_op)
|
||||
if bpy: bpy.ops.add(rna_op)
|
||||
return rna_op
|
||||
|
||||
def clientConnection(scene):
|
||||
netsettings = scene.network_render
|
||||
def clientScan():
|
||||
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]":
|
||||
bpy.ops.render.netclientscan()
|
||||
buf, address = s.recvfrom(64)
|
||||
|
||||
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):
|
||||
return conn
|
||||
|
||||
Reference in New Issue
Block a user