Python 2.7 在python 2.7中,SIGHUP信号给出pika异常
我有一个鼠兔消费者 当我运行它并发送SIGHUP信号时,它会给我一个异常 消费者测试 例外情况:Python 2.7 在python 2.7中,SIGHUP信号给出pika异常,python-2.7,rabbitmq,pika,python-pika,Python 2.7,Rabbitmq,Pika,Python Pika,我有一个鼠兔消费者 当我运行它并发送SIGHUP信号时,它会给我一个异常 消费者测试 例外情况: [*]正在等待消息。要退出,请按CTRL+C 收到的感叹 回溯(最近一次呼叫最后一次): 文件“/run/media/bluto/04D0CF8ED0CF8500/Email\u Projects/new\u Email\u workers/testsigHup.py”,第47行,在 mq_通道。启动_消耗() 文件“/usr/lib/python2.7/site packages/pika/ada
[*]正在等待消息。要退出,请按CTRL+C
收到的感叹
回溯(最近一次呼叫最后一次):
文件“/run/media/bluto/04D0CF8ED0CF8500/Email\u Projects/new\u Email\u workers/testsigHup.py”,第47行,在
mq_通道。启动_消耗()
文件“/usr/lib/python2.7/site packages/pika/adapters/blocking_connection.py”,第814行,在start_中
self.connection.process\u data\u events()
文件“/usr/lib/python2.7/site packages/pika/adapters/blocking_connection.py”,第168行,进程内数据事件
如果self.\u handle\u read():
文件“/usr/lib/python2.7/site packages/pika/adapters/blocking_connection.py”,第271行,在句柄中读取
如果self.\u read\u poller.ready():
文件“/usr/lib/python2.7/site packages/pika/adapters/blocking_connection.py”,第54行,准备就绪
事件=self.poller.poll(self.poll\u超时)
错误:(4,‘系统调用中断’)
您的函数sighup\u处理程序
在您的示例中不起任何作用。当我运行这个示例时,它只会打印“sighup received”。您是否缺少一些代码?打印“sighup received”后会出现上述异常,我无法复制该问题。你在运行哪个操作系统?你在运行最新版本的Pika(0.9.14)?我在使用suse 13.1和Pika 0.9.13。我将试用pika 0.9.14并回复0.9.14以解决此问题
import signal
import traceback
import pika
from time import sleep
received_signal = False
def signal_handler(signal, frame):
global received_signal
received_signal = True
exit(1)
def sighup_handler(signal, frame):
print "sighup received"
signal.signal(signal.SIGHUP, sighup_handler)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
mq_server = "localhost"
mq_exchange = "my_exchange"
my_queue = "test_queue"
try:
mq_connection = pika.BlockingConnection(pika.ConnectionParameters(mq_server))
except:
exit(1)
mq_channel = mq_connection.channel()
mq_channel.exchange_declare(exchange=mq_exchange, durable=True)
mq_channel.queue_declare(queue=my_queue, durable=True)
mq_channel.queue_bind(my_queue, mq_exchange)
def callback(ch, method, properties, body):
try:
sleep(10)
ch.basic_reject(delivery_tag=method.delivery_tag)
except Exception as e:
traceback.print_exc() # region Message consumption
try:
print ' [*] Waiting for messages. To exit press CTRL+C'
mq_channel.basic_consume(callback, queue=my_queue)
mq_channel.start_consuming()
except Exception as e:
traceback.print_exc()
while True:
pass
[*] Waiting for messages. To exit press CTRL+C
sighup received
Traceback (most recent call last):
File "/run/media/bluto/04D0CF8ED0CF8500/Email_Projects/new_email_workers/testsigHup.py", line 47, in <module>
mq_channel.start_consuming()
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 814, in start_consuming
self.connection.process_data_events()
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 168, in process_data_events
if self._handle_read():
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 271, in _handle_read
if self._read_poller.ready():
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 54, in ready
events = self.poller.poll(self.poll_timeout)
error: (4, 'Interrupted system call')