2017-04-21 1 views
0

J'ai besoin d'aide, désolé pour mon anglais =)Python Tornado JSON flux

J'ai un gestionnaire de requêtes de tornade API qui a reçu un JSON avec une méthode API, alors je parse la méthode API et commencer à cette fonction d'enfant spécifique méthode ou méthode de classe enfant. L'une de ces méthodes est "getEvents", si la méthode dans le JSON "getEvents" reçu puis une première réponse devrait écrire et flasher des informations API dans le tampon de sortie mais la connexion devrait être ouverte.

Ensuite, un thread appelle qui collecte des données d'événement à partir de l'application et lorsqu'un nouvel événement est détecté, le thread doit écrire et vider un JSON qui inclut ces données d'événement dans le tampon de sortie.

Demande -> réponse API (connexion reste ouverte) -> JSON MSG -> JSON MSG -> etc.

Est-ce possible d'avoir une coroutine en fonction de l'enfant sur un gestionnaire de requêtes et ce comportement est possible tenir la connexion ouverte et envoyer JSON MSG constamment?

Un exemple de code serait génial =)
Merci beaucoup.

BR Christoph

Répondre

0

Du côté Tornado, cela est facile: il suffit d'écrire vos messages et await self.flush() après chacun:

async for i in some_queue: 
    self.write(i) 
    await self.flush() 

Mais du côté client, les choses sont plus délicat - la plupart JSON parseurs don Ne manipulez pas très bien les objets JSON consécutifs, vous avez donc probablement besoin d'un délimiteur explicite ou d'un autre cadrage. Si vous souhaitez prendre en charge les clients de navigateur, vous devez utiliser les Websockets ou server-sent events.

+0

merci beaucoup je dois gérer seulement le côté serveur =), l'async et attendre est python3 dans python2 devrais-je utiliser les corotines droite? –

+0

Oui, dans les anciennes versions de python, vous utiliseriez '@ gen.coroutine' et' yield' –

+0

merci ...... –