Προς το περιεχόμενο

Python subscribe to notifications


Προτεινόμενες αναρτήσεις

Δημοσ.

Λοιπόν έχω μια εφαρμογή που υποστηρίζει το rest api και χρησιμοποιώ το πακέτο requests για να μιλήσω με την εφαρμογή. Mέχρι εδώ μια χαρά.

 

Υπάρχουν κάποια ΑΡΙ που μπορείς να κάνεις subscribe για event notification και όποτε γίνεται triggered ένα event η εφαρμογή μου στέλνει ένα ΗΤΤΡ ΡΟST

 

Δεν έχω καθόλου εμπειρία πως να το χειριστώ αυτό στη python. Έχω δει κάτι για asynchronous programming αλλά δεν είμαι σίγουρος ότι αυτό θα κάνει αυτό που θέλω

 

Αυτό που μου έρχεται στο μυαλό χοντρικά είναι να χρησιμοποιήσω ένα HTTP server (ο simplehttpserver της python δε νομίζω να δέχεται post) που να δέχεται το ΗΤΤP POST και να το κάνει relay στην εφαρμογή μου;

 

Δεν έχω ιδέα.

 

Υπάρχει κανένας απλός τρόπος να το υλοποιήσω. Σορρυ αν φαίνεται χαζή η ερώτηση αλλά δεν έχω και μεγάλη εμπειρία από προγραμματισμό

Δημοσ.

Λοιπόν έχω μια εφαρμογή που υποστηρίζει το rest api και χρησιμοποιώ το πακέτο requests για να μιλήσω με την εφαρμογή. Mέχρι εδώ μια χαρά.

 

Υπάρχουν κάποια ΑΡΙ που μπορείς να κάνεις subscribe για event notification και όποτε γίνεται triggered ένα event η εφαρμογή μου στέλνει ένα ΗΤΤΡ ΡΟST

 

Δεν έχω καθόλου εμπειρία πως να το χειριστώ αυτό στη python. Έχω δει κάτι για asynchronous programming αλλά δεν είμαι σίγουρος ότι αυτό θα κάνει αυτό που θέλω

 

Αυτό που μου έρχεται στο μυαλό χοντρικά είναι να χρησιμοποιήσω ένα HTTP server (ο simplehttpserver της python δε νομίζω να δέχεται post) που να δέχεται το ΗΤΤP POST και να το κάνει relay στην εφαρμογή μου;

 

Δεν έχω ιδέα.

 

Υπάρχει κανένας απλός τρόπος να το υλοποιήσω. Σορρυ αν φαίνεται χαζή η ερώτηση αλλά δεν έχω και μεγάλη εμπειρία από προγραμματισμό

Αυτο που ψαχνεις ειναι Web Sockets.

   Εφοσον θα το χρησιμοποιεις σε συνδιασμο με τον rest server και φανταζομαι στελνεις ενα session id ηδη σε οσους κανουνε loggin στον Rest server, με το ιδιο session id θα μπορουνε οι χρηστες να συνδεθουνε με τον web socket server και να λαβουνε μηνυματα( η να στελνουνε ) μηνυματα.

  Θα βρεις θεωρω αρκετες υλοποιησεις, με λιγη τροποποιηση ωστε να περιλαμβανουν τον ελεγχο του session id εισαι ready to go. 

Δημοσ.

Aυτό δεν προϋποθέτει να υποστηρίζει websockets o server ;

 

Τον server δεν τον ελεγχω εγώ oύτε μπορώ και να αλλάξω τίποτα. Απλά γράφω τον client και επικοινωνώ με τον server μέσω restful API

Δημοσ.

Aυτό δεν προϋποθέτει να υποστηρίζει websockets o server ;

 

Τον server δεν τον ελεγχω εγώ oύτε μπορώ και να αλλάξω τίποτα. Απλά γράφω τον client και επικοινωνώ με τον server μέσω restful API

 Το restful API πρεπει να τροποποιησεις, ο server δεν εχει σχεση.

 Θα προσθεσεις την δυνατοτητα με απλα λογια, οταν στελνετε ενα post/ delete/ edit request στον Rest server ο rest server να στελνει στους active users το table και το record id που εγινε η τροποποιηση μεσω της ανοιχτης web socket μεταξυ rest server and client  και μετα ειναι θεμα των clients τι θα κανουνε με αυτα τα στοιχεια.

   Ουσιαστικα δηλαδη περα απο τη HTTP connection που χρησημοποιηεις για να στελνεις requests clients to Rest server, θα εχεις και μια δευτερη web socket connection.

  Εφοσον ηδη η επικοινωνια με τον server γινεται με restfull api, the best and only way to go are web sockets. 

Δημοσ. (επεξεργασμένο)

Ok θα το κοιτάξω να δω τι μπορώ να κάνω. Μια άλλη σχετική ερώτηση. Οκ μπορώ και κάνω subscribe για event notification εως τώρα. Πως θα περιμένω μέχρι να γίνει triggered το event? Kαι όταν γίνει triggered και ο server μου στείλει το ΗΤΤΡ ΡΟST πως θα το κάνω capture στην python ? Είναι απλά θέμα ενός loop, είναι μέρος της υλοποίησης με τα websockets ή κάτι εντελώς διαφορετικό;

 

To ξέρω ότι κάνω πολύ βασικές ερωτήσεις απλά το έχω googlarei πάρα πολύ τις τελευταίες μέρες χωρίς να βρω κάτι συγκεκριμένο

 

Edit: Δε νομιζω ότι ο server δέχεται συνδέσεις μέσω websockets. Στο documentation δεν αναφέρει τίποτα για websockets και όταν στέλνω το HTTP\1.1 GET για να ξεκινήσω το handshake ο server απαντάει με το στανταρτ 200 OK αντί για ΗΤΤΡ\1.1 101 που θα έπρεπε για websockets

Επεξ/σία από beastgr
Δημοσ.

Ok θα το κοιτάξω να δω τι μπορώ να κάνω. Μια άλλη σχετική ερώτηση. Οκ μπορώ και κάνω subscribe για event notification εως τώρα. Πως θα περιμένω μέχρι να γίνει triggered το event? Kαι όταν γίνει triggered και ο server μου στείλει το ΗΤΤΡ ΡΟST πως θα το κάνω capture στην python ? Είναι απλά θέμα ενός loop, είναι μέρος της υλοποίησης με τα websockets ή κάτι εντελώς διαφορετικό;

 

To ξέρω ότι κάνω πολύ βασικές ερωτήσεις απλά το έχω googlarei πάρα πολύ τις τελευταίες μέρες χωρίς να βρω κάτι συγκεκριμένο

 

Edit: Δε νομιζω ότι ο server δέχεται συνδέσεις μέσω websockets. Στο documentation δεν αναφέρει τίποτα για websockets και όταν στέλνω το HTTP\1.1 GET για να ξεκινήσω το handshake ο server απαντάει με το στανταρτ 200 OK αντί για ΗΤΤΡ\1.1 101 που θα έπρεπε για websockets

  Εχεις μπερδευτει λιγο, αλλο ο Rest Server και αλλο ο websocket server.

  Σκεψου τα σαν κατι που συμπληρωνει το αλλο.

   

   Καθε client θα συνδεεται και στον rest server αποπου θα μπορει να στελνει μηνυματα, οπως και τωρα, αλλα επισης και υπαρχει και μια δευτερη connection μεσω web sockets που θα μπορει ο rest server μεσω του web socket server να στειλει μηνυμα. 

   PS : oi websockets ειναι με ws/wss οχι http/https.

Δημοσ.

Καλά το οτι έχω μπερδευτεί είναι φυσικό μιας και δεν εχω προηγούμενη εμπειρία αλλά το παλεύω ;)

 

Για να καταλάβω.

Ο client μου θα συνδέεται κατευθείαν στον rest server (το οποίο έχω ήδη κάνει με το requests package της python)

Ο client μου θα συνδέεται σε έναν websocket server μέσω websockets

Ο websocket server με τι θα συνδέεται στον rest server ? Έχω ήδη προσπαθήσει να συνδεθω με έναν websocket client στον rest server (φυσικά με ws\wss) αλλά ο server δεν απαντούσε όπως έπρεπε.

 

Κατάφερα και έκανα ένα ξεχωριστο προγραμματάκι και με το sockets package της python έβαλα τον υπολογιστή μου να κάνει listen σε μια συγκεκριμένη port και κατάφερα να στέλνω εκεί τα event triggered messages από τον rest server.

 

Nα φανταστώ ότι αν θέλω να τα βάλω και τα δυο σε ένα πρόγραμμα θα πρεπει να χρησιμοποιήσω threading ?

Δημοσ.

Καλά το οτι έχω μπερδευτεί είναι φυσικό μιας και δεν εχω προηγούμενη εμπειρία αλλά το παλεύω ;)

 

Για να καταλάβω.

Ο client μου θα συνδέεται κατευθείαν στον rest server (το οποίο έχω ήδη κάνει με το requests package της python)

Ο client μου θα συνδέεται σε έναν websocket server μέσω websockets

Ο websocket server με τι θα συνδέεται στον rest server ? Έχω ήδη προσπαθήσει να συνδεθω με έναν websocket client στον rest server (φυσικά με ws\wss) αλλά ο server δεν απαντούσε όπως έπρεπε.

 

Κατάφερα και έκανα ένα ξεχωριστο προγραμματάκι και με το sockets package της python έβαλα τον υπολογιστή μου να κάνει listen σε μια συγκεκριμένη port και κατάφερα να στέλνω εκεί τα event triggered messages από τον rest server.

 

Nα φανταστώ ότι αν θέλω να τα βάλω και τα δυο σε ένα πρόγραμμα θα πρεπει να χρησιμοποιήσω threading ?

Ο wb socket server θα τρέχει παράλληλα με τον rest σέρβερ, η ο web socket server θα ειναι επιπλέον κομμάτι του ρεστ σέρβερ , όπως θέλεις το υλοποιεις.

  Το threading είναι απαραίτητο για τον ws client, αλλά γενικως δεν είναι τίποτα, και θεωρώ για python θα βρεις εύκολα μια έτοιμη υλοποίηση client ώστε να πάρεις ιδέες.

 

   Ότι σου λέω είναι γενικο γιατί δεν έχω καμία πληροφορία για τον rest server σου. Αμα εχεις τον source code του τοτε προσθετεις τον wb server που εχεις ηδη ετοιμασει και τροποποιεις τον rest server ωστε οταν δεχετε request για query να στελνει web socket message σε ολα τα active connections.

 

  Αμα δεν εχεις καμια προσβαση στον rest server τοτε η μονη λυση ειναι να τροποιησεις τους clients να στελνουνε μηνυματα και στον rest και στον web socket server, και ο web socket server θα στελνει το request message πισω σε ολα τα active connections.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...