Saya memiliki perangkat keras berikut:
3 x Partikel Foton . Masing-masing berfungsi sebagai Server HTTP
1 x Raspberry Pi 3 yang akan berfungsi sebagai Klien HTTP
Setelah meminta GET HTTP ke Foton apa pun, API kembali:
{
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
}
}
}
Saya ingin membuat skema Polling di mana klien Raspberry Pi melakukan HTTP GET setiap 0,1 detik pada masing-masing dari 3 Server.
Saya tidak yakin apakah ada sesuatu seperti Polling HTTP dan apakah Perpustakaan Asynchronous seperti Twisted by Python harus menjadi yang akan digunakan.
Saya ingin mendapatkan saran tentang bagaimana model Multiple Server - Single Client akan berfungsi dengan HTTP?
Referensi
Setiap Photon Partikel memiliki respons JSON yang disebutkan di atas untuk Permintaan GET HTTP.
Raspberry Pi akan berfungsi sebagai Klien HTTP, berusaha mendapatkan permintaan dari masing-masing dan setiap Foton Partikel.
sumber
Jawaban:
Saya menemukan solusi dasar yang baik untuk apa yang dimaksud @Chris Stratton dengan koneksi tcp yang tetap hidup:
Anda harus membuat loop abadi yang menunggu 0,1 detik dan kemudian membuat salah satu dari langkah-langkah ini antara menghubungkan dan menutup sehingga menghubungkan hanya disebut sekali dalam memulai dan menutup hanya ketika sangat perlu untuk mematikan semuanya.
Dengan utas, begitu karya sebelumnya:
Sumber:
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
sumber
Mungkin tautan berikut dapat membantu Anda:
Contoh klien dasar: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-http-client
Contoh server echo dasar: https://docs.python.org/2/library/asyncore.html#asyncore-example-basic-echo-server
Juga, sudahkah Anda berpikir untuk menggunakan protokol UDP? mungkin lebih baik ...
Dan saya akan menyarankan tentang HTTP / 1.0, sejauh yang saya tahu, tidak wajib dalam implementasinya, untuk menjaga koneksi tetap hidup, yang didefinisikan dalam HTTP / 1.1; bagaimanapun itu tergantung pada implementasinya, bisa atau tidak bisa.
sumber