首页 > 编程问答 >为什么上传文件时我的 Azure 函数应用 blob 触发器不起作用?

为什么上传文件时我的 Azure 函数应用 blob 触发器不起作用?

时间:2024-07-25 12:12:56浏览次数:12  
标签:python azure-devops azure-functions azure-blob-storage

我用 python 创建了一个 blob 触发函数应用程序。 我的存储帐户中还有一个 Blob 存储。 设置(local.settings,function.json)似乎没问题。 运行: func start 并在 blob 中上传文件后,没有任何反应。
这是代码:

import logging
from azure.functions import InputStream
import pandas as pd
import datetime
from datetime import datetime as dt
from datetime import date,timedelta
import datetime
from dateutil.relativedelta import relativedelta
import numpy as np
import os
import azure.storage.blob
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
import azure.functions as func
default_credential = DefaultAzureCredential()
def main(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")
    
    try:
        # Process the blob data here
        data = myblob.read()
        logging.info(f"Blob content: {data}")
    except Exception as e:
        logging.error(f"Error processing blob: {str(e)}")

我只是想看看日志记录在上传新文件后是否正常工作。 func run 后我也没有收到任何错误。 您能指导我如何克服这个问题吗?

我可以用我的笔记本读取/写入 blob,但功能应用程序无法正常工作。


以下是一些可解决 Azure 函数 Blob 触发器无法正常工作的原因和步骤:

1. 检查函数日志

  • 启用详细日志记录: 确保你的函数日志配置为包含详细级别。这将有助于捕获任何错误或警告。

    • 在 Azure 门户中,导航到你的函数应用,然后选择“平台功能”下的“监控”。
    • 在“诊断和解决问题”部分,选择“应用服务日志”。
    • 确保将“应用程序日志(FileSystem)”设置为“错误”以上级别,理想情况下为“信息”或“详细”。
  • 查看日志流: 部署函数并上传 blob 后,通过“Log Streaming”在门户中检查你的函数应用日志,或使用 Azure Monitor 之类的工具。查找任何错误消息或意外行为的迹象。

2. 验证函数配置

  • function.json:

    • 确保路径属性中的 Blob 容器名称和文件扩展名过滤器与你的设置匹配。例如, "path": "mycontainer/input/{name}.csv" 将触发名为“input”的容器中扩展名为“.csv”的 blob。
    • 确认触发器和绑定配置正确,包括连接字符串设置。它应该是 "connection": "your_storage_connection_string" 而不是 "connection": "AzureWebJobsStorage"
  • 本地设置:

    • 如果你在本地运行,请确认你的 local.settings.json 文件包含存储连接字符串,并且密钥名称在你的 function.json 中正确引用。密钥名称应为 "AzureWebJobsStorage"
  • 存储连接字符串:

    • 仔细检查你的存储连接字符串是否有效且具有对存储帐户的必要权限。

3. Blob 存储和函数应用配置

  • 相同的区域: 为了获得最佳性能并避免额外的成本,请确保你的存储帐户和函数应用位于同一 Azure 区域。

  • 触发器验证:

    • 在门户中,导航到你的函数应用并选择“函数”。
    • 选择你的 Blob 触发函数并转到“集成”。
    • 在 Blob 触发器下,选择“编辑”。
    • 单击“测试连接”以验证 Azure 函数是否可以连接到你的存储帐户。

4. 代码问题

  • 异常处理:
    • 你的代码包含一个 try-except 块。但是,你只在日志中记录错误。根据错误,你可能希望采取其他措施或引发异常以发出更明显的故障信号。
  • Blob 内容读取:
    • 你的代码正在读取 Blob 内容,但没有对它做任何事情。添加一些逻辑来处理数据或在日志中记录更多信息,以确认函数是否按预期工作。

5. 其他事项

  • 函数应用重启: 保存对函数应用的任何配置更改后,请尝试重启它。
  • 部署模式: 确认你使用的是正确的部署模式(例如,编辑模式与运行模式)。
  • 网络连接: 如果你的函数运行在受限网络中,请确保它可以访问存储帐户。

如果你在执行这些步骤后仍然遇到问题,请提供以下信息,以便我可以提供进一步的帮助:

  • 函数应用日志中的任何错误消息或异常。
  • 你的 function.json 和相关的 local.settings.json 文件(删除任何敏感信息)。
  • 你用来部署函数应用的方法。
  • 你的存储帐户和函数应用所在的 Azure 区域。

标签:python,azure-devops,azure-functions,azure-blob-storage
From: 78791422

相关文章

  • 如何使用 Python 从 Square 中的创建客户方法中检索客户 ID
    我正在square创建一个客户并得到如下结果。我需要的是获取客户的id。我的代码:fromsquare.clientimportClientclient=Client(access_token=settings.SQUARE_ACCESS_TOKEN,environment=settings.SQUARE_ENVIRONMENT,)api_customers=client.customers......
  • 为什么从.导入Python
    我使用的存储库的结构如下:在myrepo/src/中有:主要.pycore.py和somepkgsomepkg有init.py和其他python文件。somepkg不是任何文件中的类或函数。在main.py中,我看到:from.importcorefrom.importsomepkg我的问题是from和.......
  • 使用 Python 中的 Square API 检索客户 ID
    我正在为Square开发一个客户创建表单,它将创建一个客户,然后立即检索他们的ID以在程序中进一步使用。但是,我不知道如何使用API来过滤使用list_customers命令返回的数据。我找到了这篇文章:HowtoretrievecustomeridfromcreatecustomermethodinSquareusing......
  • 如何通过在字符串中使用 \u 或 \U 转义来正确表示 python3 (3.6.1+) 中的补充 unico
    最近我正在学习python,在python3中遇到了unicode转义文字的问题。似乎像Java一样,\u转义被解释为Java使用的UTF-16代码点,但问题来了:例如,如果我尝试放置3个字节的utf-8字符,例如“♬”(https://unicode-table.com/en/266C/),甚至是补充unicode字符,例如“......
  • 我的 Python 代码和 Cycle Time 小部件之间的平均周期时间不同
    我过去遇到过如何在周期时间小部件中计算平均周期时间的一些问题,因此我决定使用Python进行分析,看看是否找到任何方法来计算平均周期时间并获得相同的结果周期时间小部件中显示的值。我的问题是我无法达到周期时间小部件中显示的相同的平均周期时间值。你们能帮我解决这......
  • python3之requests库使用
    使用https://www.cnblogs.com/caroline2016/p/17007956.html建立的api测试下requests库怎么使用。模拟登录时laravelapi那边出现了 Sessionstorenotsetonrequest.错误。解决办法在app/Http/Kernel.php中api中间件组中添加两行代码:<?phpprotected$middlewareGrou......
  • 如何利用Python中的pyecharts制作—不同的柱状图
    目录专栏导读库的介绍库的安装1、柱状图(防止x轴标签名过长)2、柱状图—堆叠样式3、复合型柱状图4、柱状图—字典型总结专栏导读......
  • 六、【Python】基础教程-【Python全掌握】六大基础数据类型:浮点、布尔、列表、元组、
    ......
  • 用于获取半径内邮政编码的 Python 脚本无法正确填充 CSV
    我正在尝试编写一个Python脚本,该脚本读取包含邮政编码的CSV文件,使用API获取半径内的邮政编码,然后将结果填充到CSV中的新列中。API请求似乎工作正常,我可以在控制台输出中看到响应。但是,生成的CSV文件在radius_zips列中没有预期的值。这是我当前的脚本:......
  • 如何在Python中对轮廓图应用点画?
    我想向XarrayDataArray数据添加点画以指示重要性。该数据是经纬度网格上的二维气候数据。我想提供一个True/False掩码来绘制映射的变量数据。我正在尝试使用contourf来达到此目的,但如果它们更合适,我愿意接受其他方法。我尝试过使用contourf孵化点画重要区域,但......