Skip to content

Commit 5d7dc0b

Browse files
committed
Making the ZMQ logger better protected, and more able to shut down itself... so we don't get stuck on program exit waiting forever for a ZMQ polling event.
1 parent d05133e commit 5d7dc0b

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/classes/logger_libopenshot.py

+21-11
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,17 @@ class LoggerLibOpenShot(Thread):
3838
def __init__(self):
3939
super().__init__()
4040
self.daemon = True
41+
self.running = False
42+
self.context = None
43+
self.socket = None
44+
4145

4246
def kill(self):
4347
self.running = False
48+
if self.context:
49+
self.context.destroy()
50+
if self.socket:
51+
self.socket.close()
4452

4553
def run(self):
4654
# Running
@@ -63,23 +71,25 @@ def run(self):
6371
openshot.ZmqLogger.Instance().Enable(debug_enabled)
6472

6573
# Socket to talk to server
66-
context = zmq.Context()
67-
socket = context.socket(zmq.SUB)
68-
socket.setsockopt_string(zmq.SUBSCRIBE, '')
74+
self.context = zmq.Context()
75+
self.socket = self.context.socket(zmq.SUB)
76+
self.socket.setsockopt_string(zmq.SUBSCRIBE, '')
6977

7078
poller = zmq.Poller()
71-
poller.register(socket, zmq.POLLIN)
79+
poller.register(self.socket, zmq.POLLIN)
7280

7381
log.info("Connecting to libopenshot with debug port: %s" % port)
74-
socket.connect ("tcp://localhost:%s" % port)
82+
self.socket.connect("tcp://localhost:%s" % port)
7583

7684
while self.running:
7785
msg = None
7886

7987
# Receive all debug message sent from libopenshot (if any)
80-
socks = dict(poller.poll(1000))
81-
if socks and socks.get(socket) == zmq.POLLIN:
82-
msg = socket.recv(zmq.NOBLOCK)
83-
84-
if msg:
85-
log.info(msg.strip().decode('UTF-8'))
88+
try:
89+
socks = dict(poller.poll(1000))
90+
if socks and socks.get(self.socket) == zmq.POLLIN:
91+
msg = self.socket.recv(zmq.NOBLOCK)
92+
if msg:
93+
log.info(msg.strip().decode('UTF-8'))
94+
except Exception as ex:
95+
log.warning(ex)

0 commit comments

Comments
 (0)