Add zeroconf to job_server and listener to client

This commit is contained in:
Brett Williams
2023-06-01 20:02:15 -05:00
parent 997feb74cc
commit 1dca7d8029
3 changed files with 15 additions and 9 deletions

View File

@@ -5,11 +5,12 @@ import tkinter as tk
import threading import threading
import time import time
import socket import socket
import os import os, sys
from tkinter import ttk, messagebox from tkinter import ttk, messagebox
from PIL import Image, ImageTk from PIL import Image, ImageTk
from new_job_window import NewJobWindow from new_job_window import NewJobWindow
from server_proxy import RenderServerProxy from server_proxy import RenderServerProxy
sys.path.append("../")
from lib.server.zeroconf_server import ZeroconfServer from lib.server.zeroconf_server import ZeroconfServer
@@ -53,8 +54,8 @@ class ZordonClient:
self.job_cache = [] self.job_cache = []
# Setup zeroconf # Setup zeroconf
self.zeroconf = ZeroconfServer("_zordon._tcp.local.", self.server_proxy.hostname, self.server_proxy.port) self.zeroconf = ZeroconfServer("_zordon._tcp.local.", socket.gethostname(), 8080)
self.zeroconf.start() self.zeroconf.start(listen_only=True)
# Setup photo preview # Setup photo preview
photo_pad = tk.Frame(self.root, background="gray") photo_pad = tk.Frame(self.root, background="gray")

View File

@@ -16,6 +16,7 @@ import yaml
from flask import Flask, request, render_template, send_file, after_this_request, Response, redirect, url_for, abort from flask import Flask, request, render_template, send_file, after_this_request, Response, redirect, url_for, abort
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
from lib.server.zeroconf_server import ZeroconfServer
from lib.render_queue import RenderQueue, JobNotFoundError from lib.render_queue import RenderQueue, JobNotFoundError
from lib.render_workers.worker_factory import RenderWorkerFactory from lib.render_workers.worker_factory import RenderWorkerFactory
from lib.render_workers.base_worker import string_to_status, RenderStatus from lib.render_workers.base_worker import string_to_status, RenderStatus
@@ -504,6 +505,9 @@ def start_server(background_thread=False):
logging.info(f"Starting Zordon Render Server - Hostname: '{RenderQueue.hostname}'") logging.info(f"Starting Zordon Render Server - Hostname: '{RenderQueue.hostname}'")
zeroconf_server = ZeroconfServer("_zordon._tcp.local.", RenderQueue.hostname, RenderQueue.port)
zeroconf_server.start()
if background_thread: if background_thread:
server_thread = threading.Thread( server_thread = threading.Thread(
target=lambda: server.run(host='0.0.0.0', port=RenderQueue.port, debug=False, use_reloader=False)) target=lambda: server.run(host='0.0.0.0', port=RenderQueue.port, debug=False, use_reloader=False))

View File

@@ -1,13 +1,12 @@
import logging import logging
import socket import socket
import time
from zeroconf import Zeroconf, ServiceInfo, ServiceBrowser, ServiceStateChange from zeroconf import Zeroconf, ServiceInfo, ServiceBrowser, ServiceStateChange
logger = logging.getLogger() logger = logging.getLogger()
class ZeroconfServer: class ZeroconfServer():
def __init__(self, service_type, server_name, server_port): def __init__(self, service_type, server_name, server_port):
self.service_type = service_type self.service_type = service_type
self.server_name = server_name self.server_name = server_name
@@ -16,8 +15,10 @@ class ZeroconfServer:
self.zeroconf = Zeroconf() self.zeroconf = Zeroconf()
self.service_info = None self.service_info = None
self.client_cache = {} self.client_cache = {}
self.properties = {}
def start(self): def start(self, listen_only=False):
if not listen_only:
self._register_service() self._register_service()
self._browse_services() self._browse_services()
@@ -33,7 +34,7 @@ class ZeroconfServer:
f"{self.server_name}.{self.service_type}", f"{self.server_name}.{self.service_type}",
addresses=[socket.inet_aton(self.server_ip)], addresses=[socket.inet_aton(self.server_ip)],
port=self.server_port, port=self.server_port,
properties={}, properties=self.properties,
) )
self.service_info = info self.service_info = info
@@ -61,7 +62,7 @@ class ZeroconfServer:
# Example usage: # Example usage:
if __name__ == "__main__": if __name__ == "__main__":
server = ZeroconfServer("_zordon._tcp.local.", "Zordon", 5000) server = ZeroconfServer("_zordon._tcp.local.", "deathstar.local", 8080)
server.start() server.start()
# Run your Flask application or perform other tasks # Run your Flask application or perform other tasks