Tengo el siguiente hardware:
3 x fotones de partículas . Cada uno sirve como un servidor HTTP
1 x Raspberry Pi 3 que servirá como un cliente HTTP
Al solicitar un HTTP GET a cualquiera de los Photons, la API devuelve:
{
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
}
}
}
Quiero crear un esquema de sondeo donde el cliente Raspberry Pi realiza un HTTP GET cada 0.1 segundo en cada uno de los 3 servidores.
No estoy seguro de si hay algo como sondeo HTTP y si las bibliotecas asincrónicas como Twisted by Python deberían ser las que se utilizarán.
Me gustaría obtener algunos consejos sobre cómo funcionaría un modelo de Servidor múltiple - Cliente único wrt HTTP.
Referencia
Cada Particle Photon tiene la respuesta JSON mencionada anteriormente a una solicitud HTTP GET.
La Raspberry Pi serviría como un Cliente HTTP, tratando de obtener solicitudes de todos y cada uno de los Fotones de Partículas.
fuente
Respuestas:
Encontré una buena solución base para lo que @Chris Stratton se refiere a una conexión tcp mantenida viva:
Debe hacer un bucle eterno que espere 0.1s y luego realice uno de estos pasos entre conectar y cerrar para que se llame a conectar solo una vez al inicio y se cierre solo cuando sea extremadamente necesario apagar todo.
Con hilos, una vez que los trabajos anteriores:
Fuentes:
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
fuente
Tal vez los siguientes enlaces pueden ayudarlo:
Ejemplo de cliente básico: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-http-client
Ejemplo de servidor de eco básico: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-echo-server
Además, ¿has pensado en usar el protocolo UDP? puede ser mejor ...
Y recomendaría que HTTP / 1.0, hasta donde yo sé, no sea obligatorio en su implementación, para mantener las conexiones activas, que se definió en HTTP / 1.1; de todos modos depende de la implementación, puede tener o no.
fuente