1
0
mirror of https://github.com/fHDHR/fHDHR_NextPVR.git synced 2025-12-06 09:16:58 -05:00

Add experimental threading method option for Windows Users

This commit is contained in:
deathbybandaid 2020-11-16 09:10:09 -05:00
parent 08e663113b
commit 9c59328fca
3 changed files with 23 additions and 10 deletions

View File

@ -1,6 +1,7 @@
[main] [main]
uuid = uuid =
cache_dir = cache_dir =
thread_method = multiprocessing
[fhdhr] [fhdhr]
address = 0.0.0.0 address = 0.0.0.0

View File

@ -3,6 +3,7 @@ import sys
import argparse import argparse
import time import time
import multiprocessing import multiprocessing
import threading
import platform import platform
from fHDHR import fHDHR_VERSION, fHDHR_OBJ from fHDHR import fHDHR_VERSION, fHDHR_OBJ
@ -42,25 +43,33 @@ def run(settings, logger, db):
fhdhr = fHDHR_OBJ(settings, logger, db) fhdhr = fHDHR_OBJ(settings, logger, db)
fhdhrweb = fHDHR_HTTP_Server(fhdhr) fhdhrweb = fHDHR_HTTP_Server(fhdhr)
# Ensure spawn on Windows instead of fork
if settings.dict["main"]["opersystem"] in ["Windows"]:
multiprocessing.set_start_method('spawn')
try: try:
print("HTTP Server Starting") print("HTTP Server Starting")
fhdhr_web = multiprocessing.Process(target=fhdhrweb.run) if settings.dict["main"]["thread_method"] in ["multiprocessing"]:
fhdhr_web.start() fhdhr_web = multiprocessing.Process(target=fhdhrweb.run)
elif settings.dict["main"]["thread_method"] in ["threading"]:
fhdhr_web = threading.Thread(target=fhdhrweb.run)
if settings.dict["main"]["thread_method"] in ["multiprocessing", "threading"]:
fhdhr_web.start()
if settings.dict["fhdhr"]["discovery_address"]: if settings.dict["fhdhr"]["discovery_address"]:
print("SSDP Server Starting") print("SSDP Server Starting")
fhdhr_ssdp = multiprocessing.Process(target=fhdhr.device.ssdp.run) if settings.dict["main"]["thread_method"] in ["multiprocessing"]:
fhdhr_ssdp.start() fhdhr_ssdp = multiprocessing.Process(target=fhdhr.device.ssdp.run)
elif settings.dict["main"]["thread_method"] in ["threading"]:
fhdhr_ssdp = threading.Thread(target=fhdhr.device.ssdp.run)
if settings.dict["main"]["thread_method"] in ["multiprocessing", "threading"]:
fhdhr_ssdp.start()
if settings.dict["epg"]["method"]: if settings.dict["epg"]["method"]:
print("EPG Update Starting") print("EPG Update Starting")
fhdhr_epg = multiprocessing.Process(target=fhdhr.device.epg.run) if settings.dict["main"]["thread_method"] in ["multiprocessing"]:
fhdhr_epg.start() fhdhr_epg = multiprocessing.Process(target=fhdhr.device.epg.run)
elif settings.dict["main"]["thread_method"] in ["threading"]:
fhdhr_epg = threading.Thread(target=fhdhr.device.epg.run)
if settings.dict["main"]["thread_method"] in ["multiprocessing", "threading"]:
fhdhr_epg.start()
# wait forever # wait forever
while True: while True:

View File

@ -89,6 +89,9 @@ class Config():
def config_verification(self): def config_verification(self):
if self.dict["main"]["thread_method"] not in ["threading", "multiprocessing"]:
raise fHDHR.exceptions.ConfigurationError("Invalid Threading Method. Exiting...")
if self.dict["main"]["required"]: if self.dict["main"]["required"]:
required_missing = [] required_missing = []
if isinstance(self.dict["main"]["required"], str): if isinstance(self.dict["main"]["required"], str):