[英]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.KEY
、 event.KEY
、 json.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.