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 time
import socket
import os
import os, sys
from tkinter import ttk, messagebox
from PIL import Image, ImageTk
from new_job_window import NewJobWindow
from server_proxy import RenderServerProxy
sys.path.append("../")
from lib.server.zeroconf_server import ZeroconfServer
@@ -53,8 +54,8 @@ class ZordonClient:
self.job_cache = []
# Setup zeroconf
self.zeroconf = ZeroconfServer("_zordon._tcp.local.", self.server_proxy.hostname, self.server_proxy.port)
self.zeroconf.start()
self.zeroconf = ZeroconfServer("_zordon._tcp.local.", socket.gethostname(), 8080)
self.zeroconf.start(listen_only=True)
# Setup photo preview
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 werkzeug.utils import secure_filename
from lib.server.zeroconf_server import ZeroconfServer
from lib.render_queue import RenderQueue, JobNotFoundError
from lib.render_workers.worker_factory import RenderWorkerFactory
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}'")
zeroconf_server = ZeroconfServer("_zordon._tcp.local.", RenderQueue.hostname, RenderQueue.port)
zeroconf_server.start()
if background_thread:
server_thread = threading.Thread(
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 socket
import time
from zeroconf import Zeroconf, ServiceInfo, ServiceBrowser, ServiceStateChange
logger = logging.getLogger()
class ZeroconfServer:
class ZeroconfServer():
def __init__(self, service_type, server_name, server_port):
self.service_type = service_type
self.server_name = server_name
@@ -16,8 +15,10 @@ class ZeroconfServer:
self.zeroconf = Zeroconf()
self.service_info = None
self.client_cache = {}
self.properties = {}
def start(self):
def start(self, listen_only=False):
if not listen_only:
self._register_service()
self._browse_services()
@@ -33,7 +34,7 @@ class ZeroconfServer:
f"{self.server_name}.{self.service_type}",
addresses=[socket.inet_aton(self.server_ip)],
port=self.server_port,
properties={},
properties=self.properties,
)
self.service_info = info
@@ -61,7 +62,7 @@ class ZeroconfServer:
# Example usage:
if __name__ == "__main__":
server = ZeroconfServer("_zordon._tcp.local.", "Zordon", 5000)
server = ZeroconfServer("_zordon._tcp.local.", "deathstar.local", 8080)
server.start()
# Run your Flask application or perform other tasks