Repair grievous error that led to lost/duplicated messages. Python's approach to closing-over-mutable-variables sucks.
This commit is contained in:
parent
b8ba97742d
commit
efa56da614
|
@ -109,7 +109,10 @@ def gather_events_from_socket(facet, callback, ip, loop):
|
||||||
facet.log.debug('waiting for event...')
|
facet.log.debug('waiting for event...')
|
||||||
events = ip.get()
|
events = ip.get()
|
||||||
facet.log.debug(f'... got {len(events)} events')
|
facet.log.debug(f'... got {len(events)} events')
|
||||||
turn.external(facet, lambda: callback(events), loop=loop)
|
# AAARGH python's horrible closure rules wrt mutability bite AGAIN!!!!
|
||||||
|
def handler_for_specific_events(events):
|
||||||
|
return lambda: callback(events)
|
||||||
|
turn.external(facet, handler_for_specific_events(events), loop=loop)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
facet.log.debug(e)
|
facet.log.debug(e)
|
||||||
finally:
|
finally:
|
||||||
|
@ -172,6 +175,7 @@ def main(args):
|
||||||
|
|
||||||
facet = turn.active_facet()
|
facet = turn.active_facet()
|
||||||
loop = find_loop()
|
loop = find_loop()
|
||||||
|
facet.log.info('Starting background netlink thread')
|
||||||
threading.Thread(
|
threading.Thread(
|
||||||
name='background-netlink-socket-read-thread',
|
name='background-netlink-socket-read-thread',
|
||||||
target=lambda: gather_events_from_socket(facet, handle_events, ip, loop)).start()
|
target=lambda: gather_events_from_socket(facet, handle_events, ip, loop)).start()
|
||||||
|
|
Loading…
Reference in New Issue