Skip to content

Commit 96e407a

Browse files
committed
fix multiple events
1 parent 5c79fe0 commit 96e407a

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

extractor.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import time
55
import json
66
import docker
7+
import threading
78
import argparse
89
from argparse import ArgumentTypeError as err
910
from base64 import b64decode
@@ -168,6 +169,9 @@ class Handler(FileSystemEventHandler):
168169

169170
def __init__(self, args):
170171
self.args = args
172+
self.isWaiting = False
173+
self.timer = threading.Timer(0.5, self.doTheWork)
174+
self.lock = threading.Lock()
171175

172176
def on_created(self, event):
173177
self.handle(event)
@@ -181,10 +185,19 @@ def handle(self, event):
181185
if not event.is_directory and event.src_path.endswith(str(self.args.certificate)):
182186
print('Certificates changed')
183187

184-
domains = createCerts(
185-
event.src_path, self.args.directory, self.args.flat)
186-
if (self.args.restart_container):
187-
restartContainerWithDomains(domains)
188+
with self.lock:
189+
if not self.isWaiting:
190+
self.isWaiting = True #trigger the work just once (multiple events get fired)
191+
self.timer = threading.Timer(0.5, self.doTheWork)
192+
self.timer.start()
193+
194+
def doTheWork(self):
195+
domains = createCerts(self.args.certificate, self.args.directory, self.args.flat)
196+
if (self.args.restart_container):
197+
restartContainerWithDomains(domains)
198+
199+
with self.lock:
200+
self.isWaiting = False
188201

189202

190203
if __name__ == "__main__":

0 commit comments

Comments
 (0)