В качестве своего последнего проекта я создаю программу, которая отслеживает, когда USB-устройство подключается к компьютеру, сохраняя некоторые значения в базе данных SQL. Все работает нормально при работе в коде VS и через терминал, но когда я попытался реализовать Flask для его рендеринга на веб-странице, начались проблемы. Похоже, Flask каким-то образом блокирует запуск USB-мониторинга (даже если он вызывается раньше, чем Flask!), я не знаю почему. Вот мой код:
Код: Выделить всё
import hashlib
import pyudev
import threading
from cs50 import SQL
from datetime import datetime, timedelta
from flask import Flask, render_template
app = Flask(__name__)
db = SQL("sqlite:///lessmob.db")
def device_event_monitor(action, device):
if device.subsystem == 'usb':
[here my code does stuff]
def monitor_usb():
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by('usb') # Filtrare solo eventi di dispositivi USB
monitor.enable_receiving()
print("Waiting for USB devices...")
observer = pyudev.MonitorObserver(monitor, device_event_monitor)
observer.start()
try:
while True:
pass
except KeyboardInterrupt:
print("\nMonitoraggio terminato.")
@app.route("/")
def index():
return render_template("index.html")
if __name__ == "__main__":
usb_thread = threading.Thread(target=monitor_usb)
usb_thread.start()
app.run(debug=True)
Почему??Спасибо за совет за помощь и большой привет из Италии!
Я попробовал запустить свой код в нескольких средах (Windows, Linux, кодовое пространство), ничего не изменилось.
Подробнее здесь: https://stackoverflow.com/questions/792 ... g-in-flask