首页 > 解决方案 > python azure函数中的错误404 HEAD依赖

问题描述

我在天蓝色函数的实时遥测中遇到错误。

我的函数有 bin'ds 事件中心触发器作为 IN 和 Blob 作为 OUT。我的意思是,我想读取事件中心中的数据并将其作为文件流式传输到 blob。

我的绑定:

请注意,在 blob 的路径中,我创建了一个 {rand-guid} 参数来创建一个用于使用 guid 调用的文件

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "type": "eventHubTrigger",
      "name": "event",
      "direction": "in",
      "eventHubName": "myEventHUB",
      "connection": "String",
      "cardinality": "one",
      "consumerGroup": "group1",
      "dataType": "binary"
    },
    {
      "type": "blob",
      "direction": "out",
      "name": "outputBlob",
      "path": "mypath/{rand-guid}.json",
      "connection": "myStringconnectiontoblob"
    }
  ]

}

我的 main.py 函数是:

import logging
import azure.functions as func

#from azure.storage.blob import BlobServiceClient

def main(event: func.EventHubEvent, outputBlob: func.Out[func.InputStream]):



    data = event.get_body().decode('utf-8')

    outputBlob.set(data)
    outputBlob: func.Out[str]

依赖错误:

我的函数做你的工作,读取事件中心及其在 blob 中的写入数据,但是当我看到实时遥测日志时,我收到一个错误 404 HEAD,所有文件都写在 blob 中。

也许这个错误的发生是因为我在输出路径中设置了 {rand-guid},并且当函数尝试检查文件是否存在时,它不存在。之后,该函数会创建 blob 文件,因为这是在 blob 中正常写入的。

日志线就像

依赖 | 日志级别:INFO | 头 | 404…………

遥测活动错误

感谢您的评论或回答以帮助我

谢谢

标签: pythonazureazure-functions

解决方案


我使用我的事件中心和存储帐户测试您的代码,并看到同样的问题。我同意您在此故障排除站点中搜索的考虑。

如果容器或 blob 在此请求之前已被另一个客户端删除,则发生此事件。

如果您在检查容器或 blob 是否存在后使用创建容器或 blob 的 API 调用,则会发生这种情况。CreateIfNotExists API 首先调用 HEAD 以检查容器或 blob 是否存在;如果不存在,则返回 404 错误,然后进行第二次 PUT 调用以写入容器或 blob。


推荐阅读