So erhalten Sie einen Variablenwert in der Blockierungsfunktion in Python
迷茫
迷茫 2017-06-17 09:15:52
0
1
947

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()
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

Antworte allen(1)
小葫芦

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage