RabbitMQ потребляет одно сообщение, если существует, и завершает работу

Я запускаю код на python для отправки и получения из очереди RabbitMQ из другого приложения, где я не могу разрешить многопоточность. Это очень новый вопрос, но есть ли возможность просто проверить, есть ли сообщение, а если его нет, то просто перестать слушать? Как мне изменить базовый пример «Hello world» для такой задачи? В настоящее время мне удалось прекратить потребление, если я получаю сообщение, но если сообщений нет, мой метод receive() просто продолжает ждать. Как заставить его не ждать, если сообщений нет? Или, может быть, ждать только заданное количество времени?

import pika

global answer

def send(msg):
    connection = pika.BlockingConnection(pika.ConnectionParameters())
    channel = connection.channel()
    channel.queue_declare(queue='toJ')
    channel.basic_publish(exchange='', routing_key='toJ', body=msg)
    connection.close()

def receive():
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()
    channel.queue_declare(queue='toM')
    channel.basic_consume(callback, queue='toM', no_ack=True)
    global answer
    return answer

def callback(ch, method, properties, body):
    ch.stop_consuming()
    global answer
    answer = body
13
задан GrayR 24 May 2013 в 02:54
поделиться