You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Azure时间触发函数部署后不显示且执行失败求助

问题描述

我使用Python 3.11.9在Visual Studio Code中编写了一个时间触发型Azure Function,本地通过F5启动运行正常。但通过VS Code部署至Azure Portal时,尽管部署输出和Azure标签页均显示“部署成功”,Azure门户的Function App概览页面却看不到该时间触发函数,仅能在函数目录下看到应用文件。我尝试了三种部署方式:Azure标签页的本地工作区部署、Azure标签页的资源部署、终端命令部署,均未解决该问题。

已修复:函数显示问题

添加Ikhtesam回答中的额外依赖后,函数已能正常显示在Azure门户中,但新的执行问题出现:

函数按配置每5分钟尝试运行一次,但每次执行均失败。调用追踪显示为权限问题,日志提示访问Key Vault被拒绝。我使用DefaultAzureCredential和SecretClient获取Key Vault中的密钥,Key Vault采用RBAC权限模型,且Function App的服务主体已被分配相关角色,但仍出现访问被拒绝的情况。


相关代码文件

function_app.py

import logging
import azure.functions as func
import requests
import json
from simple_salesforce import Salesforce
import pandas as pd
import csv
from flatten_json import flatten
#for extending csv file for 1 day at a time holidays
import datetime as dt
from datetime import timedelta
from urllib.parse import urlparse, urljoin
#used to save to specific folder 
import os
from dotenv import load_dotenv
from shareplum import Site
from shareplum import Office365
from shareplum.site import Version
from io import BytesIO
from io import StringIO
import pandas as pd
from office365.runtime.auth.authentication_context import AuthenticationContext
from io import BytesIO 
from office365.runtime.auth.client_credential import ClientCredential 
from office365.sharepoint.client_context import ClientContext
#sharepoint
# import necessary modules
from shareplum import Site
import pandas as pd
from shareplum import Office365
from shareplum import Site
from shareplum.site import Version
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from IPython.display import display
from tabulate import tabulate
from pandas import json_normalize
from office365.sharepoint.files.file import File
import pandas as pd
import io
import errno
from datetime import datetime, timedelta
from pathlib import Path
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
from azure.core.exceptions import ResourceNotFoundError
from azure.storage.blob import BlobServiceClient
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient

app = func.FunctionApp()

@app.schedule(schedule="0 */5 * * * *", arg_name="myTimer", run_on_startup=True,
              use_monitor=False) 
def timer_trigger(myTimer: func.TimerRequest) -> None:
    if myTimer.past_due:
        logging.info('The timer is past due!')

    logging.info('Python timer trigger function executed.')


    #full script below this, inline with function so it runs when the function runs 

requirements.txt

flatten-json==0.1.14 
ipython==8.12.3 
numpy==1.26.4 
Office365-REST-Python-Client==2.5.7 
pandas==2.2.0 
python-dotenv==1.0.1 
requests==2.31.0 
scikit-learn==1.4.2 
SharePlum==0.5.1 
simple-salesforce==1.12.5 
tabulate==0.9.0

local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsFeatureFlags": "EnableWorkerIndexing"
  }
}

获取Key Vault密钥的代码片段

keyVaultName = "<key-vault-name>"
KVUri = f"https://{keyVaultName}.vault.azure.net"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)

username = client.get_secret("username").value
password = client.get_secret("password").value
security_token = client.get_secret("security-token").value
domain = client.get_secret("domain").value

内容的提问来源于stack exchange,提问作者Aidan Goldie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:25:05