【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?

简介: 【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?

问题描述

使用Flask框架部署Python代码,如何访问其中的静态文件呢?如static问价夹中的图像资源,同时如何在代码中读取txt文件中的内容呢?是相对路径或者是绝对路径呢?

实验步骤

在App Service (Windows)环境中部署Flask Python应用时,需要考虑注意参考文档“发布到 Windows 上的 Azure 应用服务”, Python项目的Web.config内容为:

<system.webServer>
  <handlers>
    <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
        scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py"
        resourceType="Unspecified" requireAccess="Script"/>
  </handlers>
</system.webServer>

而特别对于Flash项目,需要添加项目的启动配置:

Flask:将 WSGI_HANDLER 值更改为 <project_name>.app,其中 <project_name> 与项目名称匹配。 可通过查看 runserver.py 中的 from <project_name> import app 语句,找到准确的标识符。 例如,如果项目命名为“FlaskAzurePublishExample”,则该条目如下所示:

<!-- Flask apps only: change the project name to match your app -->

<add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>

以下的实验是在通过相对路径访问静态图片:

  • 首先项目路径如下(项目发布到Azure后,通过Kudu站点查看项目文件路径)

 

  • 静态文件放在了static这个文件夹下
  • test.py运行代码如下:
 
from flask import Flask,render_template
 
app = Flask(__name__, static_folder='', static_url_path='')
@app.route('/')
def index():
    return render_template('index.html')
    
if __name__ == '__main__':
app.run()
  • 访问的时候用url_for函数,templates文件夹下的index.html如下:

  • 测试结果,直接访问站点根目录时可以访问到静态文件

 

 

以上是通过HTML访问项目中的静态资源文件,如果是需要通过代码的方式读取txt文件中的内容,由于可能存在发布后的相对路径与本地测试时候路径不一致,所以建议使用部署在App Service中的绝对路径。如:open(‘D:/hone/site/wwwroot/static/test.txt’,’r’)  

 

但如果一定需要使用相对路径,这可以考虑使用App Service Home路径的环境变量,如:open(‘%HOME%/site/wwwroot/static/test.txt,’r’) 。

 

参考资料

发布到 Windows 上的 Azure 应用服务https://docs.microsoft.com/zh-cn/visualstudio/python/publish-to-app-service-windows?view=vs-2019#publish-to-app-service---visual-studio-2017-and-later

相关文章
|
8月前
|
安全 生物认证 网络安全
windows10无法设置默认保存位置怎么办?显示错误代码0x80070002怎么解决?
Win10系统下载文件时,默认会保存在特定位置,但用户可自行修改。若更改后仍无效,可通过删除目标磁盘中的特定文件夹、修改注册表权限、“干净启动”排除干扰软件或使用第三方修复工具等方式解决此问题。
1453 0
|
7月前
|
JavaScript 前端开发 机器人
【Azure Bot Service】在中国区Azure上部署机器人的 Python 版配置
本文介绍了在中国区Azure上使用Python SDK配置Azure Bot Service时遇到的问题及解决方案,涵盖参数设置与适配器配置,适用于希望在Azure中国区部署Python机器人的开发者。
203 8
|
7月前
|
Windows
office出现0xc0000142错误?windows错误代码为0xc0000142?
office出现0xc0000142错误?windows错误代码为0xc0000142?
317 0
|
10月前
|
API 开发工具 网络架构
【Azure Service Bus】使用Python SDK创建Service Bus Namespace资源(中国区)
本文介绍了如何使用Python SDK创建Azure Service Bus Namespace资源。首先,通过Microsoft Entra ID注册应用获取Client ID、Client Secret和Tenant ID,完成中国区Azure认证。接着,初始化ServiceBusManagementClient对象,并调用`begin_create_or_update`方法创建资源。
245 30
|
11月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
315 22
|
12月前
|
API 开发工具 Python
|
机器人 Shell Linux
【Azure Bot Service】部署Python ChatBot代码到App Service中
本文介绍了使用Python编写的ChatBot在部署到Azure App Service时遇到的问题及解决方案。主要问题是应用启动失败,错误信息为“Failed to find attribute &#39;app&#39; in &#39;app&#39;”。解决步骤包括:1) 修改`app.py`文件,添加`init_func`函数;2) 配置`config.py`,添加与Azure Bot Service认证相关的配置项;3) 设置App Service的启动命令为`python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func`。
270 1
|
API Python
使用Python requests库下载文件并设置超时重试机制
使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
881 1
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
726 102

推荐镜像

更多