Code cleanup in netrender

This commit is contained in:
2009-11-18 17:07:42 +00:00
parent 1f3ab7afd4
commit 5a6261afb3
4 changed files with 66 additions and 46 deletions

View File

@@ -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

View 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()

View File

@@ -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

View File

@@ -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