Flask教程(二十三)简单异步任务

软硬件环境

  • 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='0.0.0.0', port=5000, debug=True)

启动flask服务后,访问http://127.0.0.1:5000/tasks,观察终端的打印输出

flask_future

源码下载

https://github.com/xugaoxiang/FlaskTutorial

Flask教程专题

更多Flask教程,请移步

https://xugaoxiang.com/category/python/modules/

参考资料

  • https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor


相关推荐

  • 男子长期久坐后被诊断截瘫;美军高官称被击落物体可能来自外星;已婚男子与人同居生下儿女被刑拘......|酷玩日爆
  • 捐血与捐精的区别 | 每日一冷
  • 王室超爱的巴洛克珍珠,我只花129就搞定了!
  • “包地创业”的年轻人:有人租地800亩年赚百万,有人5个月就逃离
  • 游戏里的芯片战争
  • 捆绑销售、黄牛加价、万人摇号...谁在逼着中国女性抢“癌症疫苗”?
  • vivo自研Jenkins资源调度系统设计与实践
  • 了解Transformers是如何“思考”的
  • Manticore Search 6正式发布,C++高性能搜索引擎
  • SeaTunnel,Apache基金会中第一个诞生自中国的数据集成平台项目
  • RISC-V有望与X86、ARM形成三足鼎立之势
  • 包含脏话的开源代码质量更高,“粗口大师”Linus:YES!
  • 台网红“谷阿莫”落选时力决委;尹锡悦称应在不阻碍韩中交流前提下考虑防疫措施;安倍枪击案搜查工作将结束 | 每日大新闻
  • 西班牙女权有多疯狂?警察都害怕女黑社会
  • 我也来玩一玩OpenAI ChatGPT,人工智能时代终究会来临 - 第459篇
  • 论文写作实操手册,yyds!
  • .Net 问世 | 历史上的今天
  • 微软“砍掉”元宇宙部门,刚成立四个月!网友:ChatGPT 会是下一个“元宇宙”吗?
  • Android 14 的首个开发者预览版,推出四大安全增强功能
  • 赶时间发布 ChatGPT 竞品后,Google 遭员工反讽:太仓促、拙劣、非 Google Style