软硬件环境
- windows 10 64bit
- anaconda3 with python 3.7
- flask 1.1.2
简单异步任务
前言
从Python 3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个类。使用submit方法来提交线程(或进程)需要执行的任务到线程(进程)池中,并返回该任务的句柄,submit不是阻塞的,而是立即返回。通过任务句柄的done()方法来判断该任务是否结束,通过result()方法可以获取任务的返回值。
结合concurrent.futures模块,可以在flask应用中实现简单异步任务。
代码实现
直接来看代码吧
from flask import Flask
import time
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(2)
app = Flask(__name__)
@app.route('/tasks')
def run_background_tasks():
# 提交2个任务,一个带参、一个不带参
executor.submit(background_task1)
executor.submit(background_task2, 'hello', 'future')
return 'tasks started in background!'
def background_task1():
print("background_task1 started!")
time.sleep(10)
print("background_task1 done!")
def background_task2(arg1, arg2):
print(f"background_task2 started with args: {arg1} {arg2}!")
time.sleep(5)
print("background_task2 done!")
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000, debug=True)
启动flask服务后,访问http://127.0.0.1:5000/tasks,观察终端的打印输出

添加favicon
前言
favicon是favorites icon的缩写,是指在网页浏览器显示在标签页或者历史记录里的图标。这个图标能帮助用户将您的网站与其他网站区分开。

图片转icon
favicon文件的尺寸通常比较小,常见的尺寸有16x16,32x32和48x48。我们准备一张jpg或者png的图片,来到在线的转换站点进行转换

flask中如何处理?
我们简单写个flask应用,这个应该非常熟练了,app.py内容为
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
创建模板文件index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
<title>Favicon</title>
</head>
<body>
<p>Hello favicon</p>
</body>
</html>
然后将转换好的icon文件放到static文件夹下,文件名为favicon.ico
最后启动flask服务后,访问http://127.0.0.1:5000,在浏览器地址栏左侧就可以看到favicon了
