Flask教程(16)–简单异步任务和添加favicon

软硬件环境

  • 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,观察终端的打印输出

flask_future

添加favicon

前言

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

favicon

图片转icon

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

favicon.io/favicon-con…

favicon

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

favicon

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享