введите здесь описание изображения.
Она была развернута в службах приложений в Azure с использованием Python 3.9 и Flask для создания приложения по плану B1 (всего ACU: 100, 1,75 ГБ памяти, 1 виртуальный ЦП). Сценарий app.py выглядит следующим образом:
Код: Выделить всё
from flask import Flask, render_template, request, send_file
import os
from scripts.misfunciones import process_data
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = os.path.join(os.path.dirname(__file__), 'uploads')
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
# Guardar los archivos subidos
data_file = request.files['data_file']
parametro_file = request.files['parametro_file']
unidades_file = request.files['unidades_file']
if not os.path.exists(app.config['UPLOAD_FOLDER']):
os.makedirs(app.config['UPLOAD_FOLDER'])
data_path = os.path.join(os.path.dirname(__file__), 'uploads', 'DATA.xlsx')
parametro_path = os.path.join(os.path.dirname(__file__), 'uploads', '240424RF_Parametro.xlsx')
unidades_path = os.path.join(os.path.dirname(__file__), 'uploads', '240306RF_Unidades.xlsx')
output_path = os.path.join(os.path.dirname(__file__), 'uploads', 'DATA_FIN.xlsx')
data_file.save(data_path)
parametro_file.save(parametro_path)
unidades_file.save(unidades_path)
process_data(data_path, parametro_path, unidades_path, output_path)
return send_file(output_path, as_attachment=True)
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
Код: Выделить всё
import pandas as pd
import openpyxl
import re
chars_dict = {
'\n':'','*':'','°':'','(':'',')':'','+':'',
'/':'','.':'','_':'',' ':'',',':'','\'':'',
'á':'a','é':'e','í':'i','ó':'o','ú':'u','-':''
}
def var_lower(df):
for i in df.columns[1:]:
df[str(i)] = df[str(i)].str.lower()
def remove_pattern(df, pattern):
for column in df.columns:
df[column] = df[column].replace(pattern, '', regex=True)
return df
def process_data(data_path, parametro_path, unidades_path, output_path):
DATA = pd.read_excel(data_path, engine='openpyxl')
Parametro = pd.read_excel(parametro_path, engine='openpyxl')
Unidades = pd.read_excel(unidades_path, engine='openpyxl')
DATA_CORR = DATA.copy()
Parametro_CORR = Parametro.copy()
Unidades_CORR = Unidades.copy()
DATA_CORR = remove_pattern(DATA_CORR, 'αφ')
DATA_CORR = remove_pattern(DATA_CORR, 'αδ')
DATA_CORR = remove_pattern(DATA_CORR, 'φ')
var_lower(DATA_CORR)
var_lower(Parametro_CORR)
var_lower(Unidades_CORR)
for char, replacement in chars_dict.items():
escaped_char = re.escape(char)
DATA_CORR = DATA_CORR.replace(escaped_char, replacement, regex=True)
Parametro_CORR = Parametro_CORR.replace(escaped_char, replacement, regex=True)
Unidades_CORR = Unidades_CORR.replace(escaped_char, replacement, regex=True)
Unificar_Unidad = []
cantidad = 0
for i in DATA_CORR['ID-UNIDADES']:
cantidad += 1
for j in range(len(Unidades_CORR)):
for k in Unidades_CORR.columns[1:]:
if i == Unidades_CORR[k][j]:
Unificar_Unidad.append(j + 1)
break
if cantidad == len(Unificar_Unidad):
break
if cantidad != len(Unificar_Unidad):
Unificar_Unidad.append(9999)
DATA['num_unid'] = Unificar_Unidad
Unificar_Param = []
cantidad = 0
for i in DATA_CORR['ID-PARANETROS']:
cantidad += 1
for j in range(len(Parametro_CORR)):
for k in Parametro_CORR.columns[1:]:
if i == Parametro_CORR[k][j]:
Unificar_Param.append(j + 1)
break
if cantidad == len(Unificar_Param):
break
if cantidad != len(Unificar_Param):
Unificar_Param.append(9999)
DATA['num_param'] = Unificar_Param
DATA.to_excel(output_path, index=False)
return output_path
Код: Выделить всё
Subir Archivos
Subir Archivos para Procesar
Archivo DATA:
Archivo Parametro:
Archivo Unidades:
Введите описание изображения здесь
Я запустил его локально, и оно работает правильно. Я не знаю, что вызывает проблему, но думаю, что это может быть связано с файлами Excel или каким-то разрешением. В списке ошибок появляется ошибка HTTP 503.
Я также пробовал запустить ее в памяти без сохранения файлов Excel, и она работала локально, но не в Azure.Пожалуйста, я буду признателен за вашу поддержку в правильном развертывании этого приложения в Azure.
Подробнее здесь: https://stackoverflow.com/questions/787 ... cess-excel