**Updated
I have the following, and according to the example on the pyudev readthedocs site, it should be daemon threaded. However, even coupling it with Threading, it blocks when using eventlet's monkey patching.
from threading import Thread
from pyudev import Context, Monitor, MonitorObserver
import eventlet
eventlet.monkey_patch()
def useless_thread():
while True:
print 'sleep thread 1'
time.sleep(2)
# Monitor UDEV for drive insertion / removal
def disk_monitor_thread():
context = Context()
monitor = Monitor.from_netlink(context)
monitor.filter_by('block')
def print_device_event(action, device):
if 'ID_FS_TYPE' in device and device.get('ID_FS_UUID') == '123-UUIDEXAMPLE':
print('{0}, {1}'.format(device.action, device.get('ID_FS_UUID')))
print 'Starting Disk Monitor...'
observer = MonitorObserver(monitor, print_device_event, name='monitor-observer')
print 'Disk Monitor Started'
observer.start()
t1 = Thread(name='uselessthread', target=useless_thread)
t1.start()
disk_monitor_thread()
Runs this:
sleep thread 1
'Disk Monitor Started'
I'm using eventlet's monkey patching for Flask-SocketIO, which is causing useless_thread1() to stop firing. If I comment out the monkey patch call, all works as intended.