簡體   English   中英

Azure Eventhub Python - OWNERSHIP_LOST

[英]Azure Eventhub Python - OWNERSHIP_LOST

我已經復制粘貼了這個腳本並且效果很好。 我從 eventhub 獲取所有事件:

import logging
from azure.eventhub import EventHubConsumerClient

connection_str = '<< CONNECTION STRING FOR THE EVENT HUBS NAMESPACE >>'
consumer_group = '<< CONSUMER GROUP >>'
eventhub_name = '<< NAME OF THE EVENT HUB >>'
client = EventHubConsumerClient.from_connection_string(connection_str, consumer_group, eventhub_name=eventhub_name)

logger = logging.getLogger("azure.eventhub")
logging.basicConfig(level=logging.INFO)

def on_event(partition_context, event):
    logger.info("Received event from partition {}".format(partition_context.partition_id))
    partition_context.update_checkpoint(event)

with client:
    client.receive(
        on_event=on_event, 
        starting_position="-1",  # "-1" is from the beginning of the partition.
    )
    # receive events from specified partition:
    # client.receive(on_event=on_event, partition_id='0')

但是,一旦我嘗試從事件中獲取任何值,我就會收到 OWNERSHIP_LOST 異常並且腳本不會檢索任何內容。

我試過event.body.KEYevent.KEYjson.loads(event)['body']['key']json.loads(event)['key'] 無論我嘗試如何處理events ,它都會引發 OWNERSHIP_LOST。

您知道解決方法或碰巧知道我在這里做錯了什么嗎?

OWNERSHIP_LOST 可能是由接收事件時的錯誤或 on_event 中的錯誤引起的。 你能試試 event.body_as_json()['key'] 嗎?

EventData.body返回bytes or Generator[bytes]

在以您想要的方式提取內容之前,您需要以適當的方式將這些原始字節反序列化為字符串/對象。

EventData對象有兩個輔助方法body_as_str ,它嘗試解碼原始字節返回字符串, body_as_json嘗試將原始字節解碼為字符串,然后嘗試加載返回 json object 的字符串。

解析原始接收字節取決於您發送的數據,如果您可以提供示例數據,這將有助於調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM