2016-06-17 1 views
0

J'ai un cas d'utilisation dans lequel je veux obtenir le dernier temps d'inactivité (dernier temps traité) d'un consommateur pika (pika.BlockingConnection).
Usecase:
Si la dernière durée traitée est supérieure au temps limite (ex: 1 heure). Je veux que le consommateur soit sorti ou avoir une méthode de rappel pour décider de ce que je dois faire? Comme envoyer une notification à un utilisateur.Arrêter channel.basic_consume si la connexion est inactive/Ne pas consommer depuis longtemps

Y at-il un moyen de le faire?

Répondre

0

pika soutient un timeout callback.

Vous pouvez ajouter ce rappel à la fin de chaque réception de message, en gardant la référence à, et le retirer au début de chaque réception de message.

def close_connec(): 
    # close here 

timer_id = None 

def on_message(chan, method, props, body): 
    if timer_id is not None: 
     chan.connection.remove_timeout(timer_id) 
    # process message 
    timer_id = chan.connection.add_timeout(3600, close_connec) 
+0

Merci pour la réponse. J'ai essayé d'employer ce code et son fonctionne bien pour moi. Mais seulement si je veux utiliser le rappel de délai d'attente seulement pour sortir/fermer la connexion. Que faire si je veux envoyer une notification et reprendre encore la consommation? Je reçois une question wierd wen j'essaie de reprendre.Le message de notification a été imprimé le nombre de messages qu'il a consommés.Voici le code de référence: (https://gist.github.com/rohitvernekar/a79faded6261feaca82e4ac6b0292be0) –

+0

la fonction de rappel de délai d'attente n'a pas été supprimée correctement.Au moyen de faire cela? @ kevin-m-granger –

+0

Je ne comprends pas la question. –