J'ai le matériel suivant:
3 x photons de particules . Chacun sert de serveur HTTP
1 x Raspberry Pi 3 qui servira de client HTTP
Sur demande d'un HTTP GET à l'un des photons, l'API renvoie:
{
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
}
}
}
Je veux créer un schéma d'interrogation où le client Raspberry Pi effectue un HTTP GET toutes les 0,1 seconde sur chacun des 3 serveurs.
Je ne sais pas s'il existe quelque chose comme HTTP Polling et si les bibliothèques asynchrones comme Twisted by Python devraient être celles à utiliser.
J'aimerais obtenir des conseils sur la façon dont un modèle à plusieurs serveurs et à client unique fonctionnerait par rapport à HTTP?
Référence
Chaque photon de particules a la réponse JSON mentionnée ci-dessus à une requête HTTP GET.
Le Raspberry Pi servirait de client HTTP, essayant d'obtenir des demandes de chaque photon de particules.
la source
Réponses:
J'ai trouvé une bonne solution de base pour ce que @Chris Stratton fait référence à une connexion TCP maintenue en vie:
Vous devez créer une boucle éternelle qui attend 0,1 s, puis effectue l'une de ces étapes entre la connexion et la fermeture afin que la connexion ne soit appelée qu'une seule fois au démarrage et à la fermeture uniquement en cas d'extrême nécessité de tout arrêter.
Avec les fils, une fois que le précédent fonctionne:
Sources:
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
la source
Peut-être que les liens suivants peuvent vous aider:
Exemple de client de base: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-http-client
Exemple de serveur d'écho de base: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-echo-server
Avez-vous également pensé à utiliser le protocole UDP? c'est peut-être mieux ...
Et je conseillerais que HTTP / 1.0, pour autant que je sache, n'est pas obligatoire dans son implémentation, pour maintenir les connexions en vie, qui a été défini dans HTTP / 1.1; de toute façon cela dépend de l'implémentation, cela peut avoir ou pas.
la source