Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Azure服务总线未从队列检索消息_Python_Azure_Azureservicebus - Fatal编程技术网

Python Azure服务总线未从队列检索消息

Python Azure服务总线未从队列检索消息,python,azure,azureservicebus,Python,Azure,Azureservicebus,我正在尝试使用python azure service bus client不断检查队列中是否有包含进程Id的新消息。出于某种原因,每次我初始化azure service bus client时,它都会运行几秒钟,然后输出以下消息:进程已完成,退出代码为-1073741819(0xC0000005) 。我仔细检查了我的队列名称和所有内容,但我不明白问题出在哪里 with servicebus_client: receiver = servicebus_client.get_queue_r

我正在尝试使用python azure service bus client不断检查队列中是否有包含进程Id的新消息。出于某种原因,每次我初始化azure service bus client时,它都会运行几秒钟,然后输出以下消息:进程已完成,退出代码为-1073741819(0xC0000005)

。我仔细检查了我的队列名称和所有内容,但我不明白问题出在哪里

with servicebus_client:
    receiver = servicebus_client.get_queue_receiver( queue_name=CALC_REQUEST_QUEUE)
    print( "state 1" )
    with receiver:
        print("state")
        for msg in receiver:
            calc_request = json.loads( str( msg ) )
            processing_identifier = calc_request.get( 'processingIdentifier', None )
            print( "Received: " + str( processing_identifier ) )
            calc_config = fetch_calc_configuration( processing_identifier )
            calc_response = invoke_capsule_summary_processing(calc_config)

如果您只是想连续从某个队列中提取新消息,请尝试以下操作:

import asyncio
from asyncio.tasks import sleep
from azure.servicebus.aio import ServiceBusClient

CONNECTION_STR = ''
QUEUE_NAME = ''


async def main():
    servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR)

    async with servicebus_client:
        receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME)
        async with receiver:
            received_msgs = await receiver.receive_messages(max_message_count=10, max_wait_time=5)
            for msg in received_msgs:
                print(str(msg))
                await receiver.complete_message(msg)

loop = asyncio.get_event_loop()
while True : 
    #each 10 seconds to pull messages from queue.
    sleep(10)  
    print('pull messages...')
    loop.run_until_complete(main())
结果:

我想知道,如果您只是接收并打印信息,会怎么样?这样我们就可以确定这是与接收部件有关的问题,还是与后续处理部件有关的问题。@AdamLing我同意你的建议。我试着只接收并打印信息,但没有成功。在获得打印消息的机会之前,代码会出错。我认为这是接收消息的问题。我想知道是否是消息的内容触发了错误——您发送的消息的内容是什么,它们是通过同一个SDK发送的?请随时在中打开问题以添加更多详细信息。