есть. Я получаю ошибку времени выполнения из контекста запроса flask. Пожалуйста, помогите мне в решении этого. Ниже мой код и подробное объяснение того, чего я пытаюсь достичь. Заранее спасибо.
Это app.py
from flask import Flask, render_template, Response, request
import time
import pandas as pd
from googlesearch import search
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST','GET'])
def upload():
global dataset
file = request.files['inputFile']
data_xls = pd.read_excel(file)
dataset = data_xls.iloc[:,0].values
return dataset
@app.route('/progress')
def progress():
def generate():
j = 0
domainstrue = dataset
websiteLinks= []
for i in range(0,len(domainstrue)):
query = domainstrue[i]
j=j+1 # Calculates the progress and finds the percentage to display on localhost.
y = (j/len(domainstrue))*100
yield "data:" + str(y) + "\n\n"
for every_link in search(query, tld="co.in", num=1, stop=1, pause=2): # This fetches the first link from the search result
websiteLinks.append(every_link)
time.sleep(4)
return Response(generate(), mimetype= 'text/event-stream')
if __name__ == '__main__':
app.run(debug=True)
Это шаблоны / index. html
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script>
var source = new EventSource("/progress");
source.onmessage = function(event) {
$('.progress-bar').css('width', event.data+'%').attr('aria-valuenow', event.data);
$('.progress-bar-label').text(event.data+'%');
if(event.data == 100){
source.close()
}
}
</script>
</head>
<body>
<h1>Transform a file demo</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="inputFile" /></br>
<input type="submit" />
</form>
<div class='progress'style="width: 50%; margin: 50px;">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
<span class="progress-bar-label">0%</span>
</div>
</div>
</div>
</body>
</html>
Итак, чего я достиг до сих пор, так это того, что когда я запускаю код, я могу загрузить файл (excel) на локальный хост и обработать его по маршруту '/ upload'. Теперь я пытаюсь добиться того, что обработанный файл с маршрута загрузки должен быть получен методом прогресса, и, поскольку начинается с l oop, я должен видеть прогресс в html в форме прогресса. bar.
- Теперь есть 2 ошибки, которые я не могу здесь преодолеть:
- Во-первых, несмотря на объявление «набора данных» как глобального, я не могу прочитать «набор данных» в процессе метода. Это показывает и ошибка, что набор данных не определен
- Во-вторых, когда я запускаю код, я получаю ошибку во время выполнения. Пожалуйста, проверьте это сообщение об ошибке скриншот ошибки
Кроме того, я искал ошибку в Google, но не смог найти выход. Пожалуйста, помогите мне. Я потратил 5 дней на это, но все еще не смог решить. Спасибо