Heim  >  Fragen und Antworten  >  Hauptteil

So erhalten Sie einen Variablenwert in der Blockierungsfunktion in Python

Derzeit wird die in C++ eingebettete Python-Funktion verwendet.
Die Python-Funktion ist ein blockierender Typ zum Empfangen von Servernachrichten.
Es gibt keinen Rückgabewert, bis die Überwachung beendet wird.
Eine Rückruffunktion von Python wird aufgerufen, um die empfangene Nachricht zu erhalten
So, wie man Nachrichten an C++ zurückgibt

BEARBEITEN:

Der Code lautet wie folgt. Das Problem besteht darin, dass der mit der Pika-Bibliothek geschriebene RabbitMQ-Client die Verwendung der
RabbitMQ-C-Bibliothek vermeiden soll. Jetzt gibt es eine Überlegung, C zu verwenden Schreiben Sie ein anpassbares Python-Modul. Dann rufe ich es in der Rückruffunktion auf, aber es fühlt sich etwas hässlich an.

#!/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()
迷茫迷茫2704 Tage vor899

Antworte allen(1)Ich werde antworten

  • 高洛峰

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

    处于堵塞的函数, 都需要等到收到数据或者等待超时才能返回的, 如果你想要快点返回, 就采用不堵塞的方式咯,只不过这样会比较蛋疼

    Antwort
    0
  • StornierenAntwort