【发布时间】:2020-11-11 21:38:39
【问题描述】:
我正在调用函数属性来更新我的 Flask 应用程序中的 while 循环中的变量,然后在响应中发送数据到我的模板 JS 以更新 css 属性 - 这是为了更新 PyTube 中的进度条。
我在 Powershell 中收到 'AttributeError: 'function' object has no attribute 'percentage of completion'。
我的代码工作正常。
虽然我想遵循最佳实践并编写正确的代码,但在这种情况下,这是一种解决方法,因为我无法找到任何其他解决方案。
作为 Python 和 Flask 的新手,我想知道这个错误是否重要,如果是,会有什么负面影响?
功能
def on_progress(stream, chunk, bytes_remaining):
total_size = stream.filesize
bytes_downloaded = total_size - bytes_remaining
on_progress.percentage_of_completion = bytes_downloaded / total_size * 100
包含 while 循环的路由
@app.route('/progress')
def progress():
def generate():
x = 0
while x <= 100:
x = round(on_progress.percentage_of_completion)
yield "data:" + str(x) + "\n\n"
time.sleep(0.1)
return Response(generate(), mimetype= 'text/event-stream')
模板 JS
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()
}
}
模板 CSS
<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>
【问题讨论】:
标签: javascript python attributeerror event-stream