Ich bin ein Datenwissenschaftler mit mehreren Jahren Erfahrung in Python, aber kein richtiger Entwickler.
Ich möchte eine App erstellen, die:
- eine interaktive Satellitenkarte in der Draufsicht anzeigt (im Grunde wie Google Earth und eingebettet).
- kann darüber verschiedene Formen hinzufügen Es stellt wie grüne Punkte Sensoren dar, die physisch in der realen Welt an bestimmten GPS-Koordinaten eingesetzt werden.
- hört kontinuierlich auf Nachrichten, die von diesen Sensoren (bis zu 30) per Multicast gesendet werden. Jeder Sensor sendet unabhängig voneinander alle 200 ms eine Nachricht mit Messdaten aus (sie senden nicht gleichzeitig).
- verarbeitet diese Nachrichten (führt einige Berechnungen basierend auf dem Nachrichteninhalt durch).
- Aktualisiert die Formen auf der Karte (ändert die Sensormarkierungen beispielsweise von grün nach rot, abhängig vom Inhalt der von diesen Sensoren empfangenen Nachrichten).
- auf unbestimmte Zeit anhören oder bis es geschlossen wird.
- lokal und sogar ohne Internet starten können (vorzugsweise).
- keine Zusammenarbeit zwischen mehreren Benutzern erforderlich.
- Funktionen wie das Hinzufügen einer Markierung auf der Karte per Mausklick, die Wiedergabe der Visualisierung der letzten 24 Stunden usw. integrieren können ... (Das werde ich Ich möchte grundsätzlich Schaltflächen und Dropdown-Menüs hinzufügen.
- Ich bin größtenteils mit Python vertraut.
- Ich bin offen für alle Vorschläge anderer Sprachen.
Ich hatte bereits ein Skript erstellt, das erfolgreich zuhört und Nachrichten mit Python und Asyncio verarbeitet. Meine Abhör- und Verarbeitungsfunktionen waren asynchrone Funktionen und die Abhörfunktion analysierte Nachrichten und fügte sie einer Warteschlange hinzu, die von der Verarbeitungsfunktion verbraucht wurde.
Ich möchte Asyncio, da ich dachte, es sei das beste Paradigma, da meine Verarbeitungsfunktion nicht sehr lange dauert und ich hauptsächlich auf das Eintreffen von Nachrichten gewartet habe, was eher ein I/O-gebundenes Problem darstellt.
Außerdem gelang es mir, eine erste Version meiner App mit PySide6 zu codieren, um eine GUI und eine zu erstellen QWebEngineView-Objekt, das eine Karte mit einigen Javascript-Funktionen und einem Leaflet anzeigt (entschuldigen Sie, wenn es nicht klar ist, da ich weder PySide- noch Javascript-Experte bin). Das funktioniert ganz gut.
Ich habe dann versucht, meinen Asyncio-Code und meine neu erstellte PySide-App zu integrieren. Aber es fällt mir schwer, beide Ereignisschleifen zu integrieren. Ich habe von Qasync gehört, finde aber nicht genügend Beispiele, um sie an meinen Anwendungsfall anzupassen.
Meine Fragen:
- Sehen Sie etwas Falsches an diesem Ansatz (PySide + Asyncio + Leaflet + Javascript)?
- Würden Sie einen anderen Ansatz und/oder einen anderen technischen Stack empfehlen? Bitte verweisen Sie gerne auf andere Sprachen und Frameworks.
- Ist für diesen Anwendungsfall mit maximal 30 Sensoren, die alle 200 ms Nachrichten im Multicast senden, und einer Verarbeitung, die nicht zu zeitaufwändig ist (wenige Berechnungen + Aktualisierung von Formen auf der Karte), Asynchronität der richtige Weg? Meldungen werden nicht von jedem Sensor gleichzeitig ausgegeben.
Mobile version