Ich habe folgende Hardware:
3 x Teilchenphotonen . Jeder dient als HTTP-Server
1 x Raspberry Pi 3 , der als HTTP-Client dient
Bei der Anforderung eines HTTP-GET an eines der Photonen gibt die API Folgendes zurück:
{
node: 1,
uptime: 1234556,
location: 'back',
sensor: {
Eu: {// Euler Angles from IMU
h: 0, p: 0, r: 0
},
La: {// linear Acceleration values from IMU
x: 0, y: 0, z: 0
}
}
}
Ich möchte ein Polling-Schema erstellen, bei dem der Raspberry Pi-Client alle 0,1 Sekunden auf jedem der drei Server ein HTTP-GET ausführt .
Ich bin mir nicht sicher, ob es so etwas wie HTTP-Polling gibt und ob asynchrone Bibliotheken wie Twisted by Python verwendet werden sollten.
Ich möchte einige Ratschläge dazu erhalten, wie ein Multiple Server - Single Client- Modell für HTTP funktioniert.
Referenz
Jedes Teilchenphoton hat die oben erwähnte JSON- Antwort auf eine HTTP-GET-Anfrage.
Der Raspberry Pi würde als HTTP-Client dienen und versuchen, Anforderungen von jedem einzelnen Teilchenphoton zu erhalten.
quelle
Antworten:
Ich habe eine gute Basislösung für das gefunden, was @Chris Stratton auf eine am Leben gehaltene TCP-Verbindung bezieht:
Sie sollten eine ewige Schleife erstellen, die 0,1 Sekunden wartet und dann einen dieser Schritte zwischen Verbinden und Schließen ausführt, damit die Verbindung nur einmal beim Starten und Schließen aufgerufen wird, wenn im Extremfall alles heruntergefahren werden muss.
Mit Threads, sobald das vorherige funktioniert:
Quellen:
http://www.wellho.net/resources/ex.php4?item=y303/browser.py
/programming/2846653/how-to-use-threading-in-python
/programming/510348/how-can-i-make-a-time-delay-in-python
quelle
Vielleicht können Ihnen die folgenden Links helfen:
Grundlegendes Client-Beispiel: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-http-client
Beispiel für einen einfachen Echoserver: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-echo-server
Haben Sie auch darüber nachgedacht, das UDP-Protokoll zu verwenden? es kann besser sein ...
Und ich würde raten, dass HTTP / 1.0, soweit ich weiß, in seiner Implementierung nicht obligatorisch ist, um die in HTTP / 1.1 definierten Verbindungen am Leben zu erhalten. es hängt sowieso von der Implementierung ab, die es haben kann oder nicht.
quelle