问题描述

通过FTP的方式,把本地能正常运行的Python Function文件上传到云上后,无法加载函数列表问题。

1:上传 function_app.py,requirements.txt文件到 wwwroot 目录中

2:在Azure Function App的Overview页面,无法显示函数列表

3:查看所有日志,无任何异常信息,Docker 日志中显示Host启动成功,function host的日志中,没有错误显示,但记录 0 functions load

### LogFiles/2024_11_21_pl0sdlwk000620_docker.log 日志显示:

2024-11-21T12:28:35.622Z INFO - Pulling image: mcr.microsoft.com/appsvc/middleware:stage6
2024-11-21T12:28:36.520Z INFO - stage6 Pulling from appsvc/middleware
2024-11-21T12:28:36.533Z INFO - Digest: sha256:
2024-11-21T12:28:36.536Z INFO - Status: Image is up to date for mcr.microsoft.com/appsvc/middleware:stage6
2024-11-21T12:28:36.569Z INFO - Pull Image successful, Time taken: 0 Seconds
2024-11-21T12:28:36.696Z INFO - Starting container for site
2024-11-21T12:28:36.697Z INFO - docker run -d --expose=8181 --name lbfunbyftp01_5_6c1bcea1_middleware -e WEBSITE_CORS_ALLOWED_ORIGINS=https://portal.azure.cn -e ....... Host.UseFileLogging=true
2024-11-21T12:28:36.697Z INFO - Logging is not enabled for this container.
Please use https://aka.ms/lin2024-11-21T12:28:37.758Z INFO - Initiating warmup request to container lbfunbyftp01_5_6c1bcea1 for site lbfunbyftp01
2024-11-21T12:28:43.089Z INFO - Container lbfunbyftp01_5_6c1bcea1 for site lbfunbyftp01 initialized successfully and is ready to serve requests.
2024-11-21T12:28:43.089Z INFO - Initiating warmup request to container lbfunbyftp01_5_6c1bcea1_middleware for site lbfunbyftp01
2024-11-21T12:28:43.415Z INFO - Container lbfunbyftp01_5_6c1bcea1_middleware for site lbfunbyftp01 initialized successfully and is ready to serve requests.

### ../LogFiles/Application/Functions/Host/2024-11-20T12-56-11Z-1ffcb4d1cf.log 日志显示:

2024-11-21T12:29:12.670 [Information] Loading functions metadata
2024-11-21T12:29:12.670 [Information] Reading functions metadata (Custom)
2024-11-21T12:29:12.671 [Information] 0 functions found (Custom)
2024-11-21T12:29:12.671 [Information] 0 functions loaded

这是一个什么情况呢?

问题解答

在遇见此问题后,百思不得其解,最后采用了最笨的办法。逐行/逐段的删除代码,一次一次的查找到底是什么代码导致了这个问题。

先使用一个近似于模板的Python Http Trigger 代码,没有任何多余引用的情况下,函数加载成功!

基于此次发现,一行一行的添加代码,终于,在本次实验中,添加到  import requests 时候,复现问题。

瞬间,明白了原因,函数无法被加载在Overview显示的原因是缺少了 requests module,虽然在 requirements.txt 中添加了requests module,但是Function App并没有帮助安装。

所以,解决问题之法就是本地上传所需要的相关依赖包!

解决办法

第一步:在本地安装 requirements.txt 中的依赖包到.python_packages文件夹中

使用下面的命令,把依赖包安装到 ".python_packages/lib/site-packages" 文件夹中

python -m pip install -r .\requirements.txt  --target=".python_packages/lib/site-packages"   

第二步:把 .python_packages 文件夹中的内容通过FTP上传 Function App的wwwroot目录中

第三步:重启应用,等待5-10分钟后,刷新Function Overview,成功加载出函数列表!

如此,问题解决!完美收工。

参考资料

部署后找不到函数 : https://docs.azure.cn/zh-cn/azure-functions/recover-python-functions?tabs=vscode%2Cbash&pivots=python-mode-configuration#functions-not-found-after-deployment

使用 FTP/S 将应用部署到 Azure 应用服务 : https://docs.azure.cn/zh-cn/app-service/deploy-ftp?tabs=portal

Install local packages : https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=get-started%2Casgi%2Capplication-level&pivots=python-mode-decorators#install-local-packages

If your project uses packages that aren't publicly available to our tools, you can make them available to your app by putting them in the __app__/.python_packages directory. Before you publish, run the following command to install the dependencies locally:

pip install --target="<PROJECT_DIR>/.python_packages/lib/site-packages" -r requirements.txt

When you're using custom dependencies, you should use the --no-build publishing option, because you've already installed the dependencies into the project folder.

 func azure functionapp publish <APP_NAME> --no-build

Remember to replace <APP_NAME> with the name of your function app in Azure.

【完】

【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题的更多相关文章

  1. Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

    在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...

  2. 批处理向FTP上传指定属性的文件 批处理增量备份的例子

    使用windows批处理向FTP上传具有指定属性的文件,类似增量备份功能. 对一个目录里的几个文件自动上传FTP时只上传有归档属性的文件,然后FTP上传成功后自动清除(本机)刚上传文件的归档属性. 类 ...

  3. FTP上传文件服务器python实现

    总结 使用Python的socket和socketserver模块实现ftp文件服务器.不是很难,但在粘包的问题上纠缠了不少时间.解决办法是发送文件信息之后等待一段时间. #!/usr/bin/pyt ...

  4. 20160113006 asp.net实现ftp上传代码(解决大文件上传问题)

    using System;using System.Configuration;using System.Data;using System.Linq;using System.Web;using S ...

  5. FTP上传下载--python

    import socket import struct import json import subprocess import os class MYTCPServer: address_famil ...

  6. selenium+python登录登出百度,等待页面加载,鼠标定位

    #coding:gbk from selenium import webdriver from selenium.webdriver.common.keys import Keys from sele ...

  7. vb.net FTP上传下载,目录操作

    https://blog.csdn.net/dzweather/article/details/51429107 FtpWebRequest与FtpWebResponse类用来与特定FTP服务器进行沟 ...

  8. ftp上传html文件

    在用ftp上传当个html文件时,发现html文件会被压缩成一行,在html中的单行注释将后面的代码都注释掉了,导致网页不能正常访问. 8uftp.FlashFXP.filezilla 在这三个ftp ...

  9. js页面加载的几种方式的速度: window.onload、 $(window).load、 $(function(){})、 $(document).ready(function () {})、onload=‘asd()’

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. python之实现ftp上传下载代码(含错误处理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...

随机推荐

  1. Windows添加软件开机自启动

    两种方式 1.添加快捷方式到开始菜单 打开我的电脑找到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 文件夹, 如果难找的话可 ...

  2. Java 查询 MMDB 数据库

    MMDB-Lookup | GitHub Lookup.java: import java.io.File; import java.net.InetAddress; import com.faste ...

  3. SmartDeviceControl_FreeRTOS_Hal_F103

    系统框图 ## 显示子设备 框图 我们不想让文件互相调用 遇到的问题:OLED 无响应,I2C无法工作 解决:使用的是软件I2C,问题在于OLED的驱动中已经包含获取从机应答的函数 ### ==更新: ...

  4. OpenTelemetry 实战:gRPC 监控的实现原理

    前言 最近在给 opentelemetry-java-instrumentation 提交了一个 PR,是关于给 gRPC 新增四个 metrics: rpc.client.request.size: ...

  5. C# WinForm避免程序重复启动,限制程序只能运行一个实例【转】

    记录一下,原文:https://blog.csdn.net/xggbest/article/details/104231935 禁止多个进程运行,当重复运行时激活以前的进程 Program.cs: u ...

  6. 修改SpringBoot的配置文件application.yaml后启动失败

    经常碰到修改application.yaml文件之后,SpringBoot项目启动失败的,报错信息如下 Connected to the target VM, address: '127.0.0.1: ...

  7. Go实现实时文件监控功能

    一.使用库介绍 fsnotify 是 Go 语言中的一个库,用于监听文件系统的变更事件.它允许程序注册对文件系统事件的兴趣,并在这些事件发生时接收通知.fsnotify 主要用来监控目录下的文件变化, ...

  8. 小tips:xml文件转为html表格展示示例

    books.xml文件格式如下: <?xml version="1.0" encoding="UTF-8"?> <xbrl xmlns=&qu ...

  9. 所见即所得,赋能RAG:PDF解析里的段落识别

    前几天,有一位用户使用OCR产品识别多栏论文后向我们询问:要怎么解决不合适的断句.分段以及错误阅读顺序的问题? 我们用一个相似案例为大家直观展示这位用户遇到的情况. 如图中的多栏期刊,如果用OCR识别 ...

  10. TimesURL: 用于通用时间序列表征学习的自监督对比学习《TimesURL: Self-supervised Contrastive Learning for Universal Time Series Representation Learning》模型代码运行解析

    现在是2024年3月25日16:17,打算好好的跑一个模型的代码,之前都没有系统性的过一遍,打算拿这个模型的代码开刀,Go,环境和乱七八糟的已经配好了. 关于这篇论文,之前写了博客,里面也有Githu ...