recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment obtenir une valeur variable dans la fonction de blocage en python

Actuellement, la fonction python intégrée en C++ est utilisée.
La fonction python est un type de blocage de la réception des messages du serveur.
Il n'y aura aucune valeur de retour jusqu'à la fin de la surveillance.
Lorsqu'un message est reçu pendant la surveillance, une fonction de rappel de python. sera appelé pour obtenir le message reçu
Alors comment renvoyer les messages en C++

EDIT :
Le code est le suivant. L'impression de rappel peut imprimer des données correctes. Le problème est que
le client RabbitMQ écrit à l'aide de la bibliothèque pika ici doit éviter d'utiliser la
bibliothèque RabbitMQ C
Il est désormais envisagé d'utiliser C pour écrivez un module réglable en python
Ensuite, je l'appelle dans la fonction de rappel, mais cela semble un peu moche.

#!/usr/bin/env python
import pika
import sys

message = ""

def callback(ch, method, properties, body):
    message = body
    print(method.routing_key)
    return message    

def consume():
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()
    result = channel.queue_declare(exclusive=True)
    queue_name = result.method.queue

    channel.queue_bind(exchange='normalEx',
                       routing_key='remote',
                       queue=queue_name)

    print(' [*] Waiting for logs. To exit press CTRL+C')

    channel.basic_consume(callback,
                          queue=queue_name,
                          no_ack=True)

    channel.start_consuming()
迷茫迷茫2748 Il y a quelques jours958

répondre à tous(1)je répondrai

  • 高洛峰

    高洛峰2017-06-17 09:17:52

    Une fonction bloquée doit attendre de recevoir des données ou d'attendre un délai avant de revenir. Si vous souhaitez revenir rapidement, utilisez une méthode non bloquante, mais ce sera plus pénible

    .

    répondre
    0
  • Annulerrépondre