Python:Flask使用ThreadPoolExecutor执行异步任务-阿里云开发者社区

开发者社区> 开发者小助手-bz7> 正文

Python:Flask使用ThreadPoolExecutor执行异步任务

简介: Python:Flask使用ThreadPoolExecutor执行异步任务
+关注继续查看

测试代码

# -*- coding: utf-8 -*-

import time
from concurrent.futures import ThreadPoolExecutor

from flask import Flask, request

executor = ThreadPoolExecutor()

app = Flask(__name__)


# 模拟耗时任务
def run_job(name):
    time.sleep(5)
    print('run_job complete', name)


@app.route('/task')
def run_task():
    """
    同步执行
    http://127.0.0.1:5000/task
    """
    name = request.args.get('name')

    run_job(name=name)

    return {'ret': 'ok'}


@app.route('/async_task')
def run_async_task():
    """
    异步执行
    http://127.0.0.1:5000/async_task
    """
    name = request.args.get('name')

    executor.submit(run_job, name=name)

    return {'ret': 'ok'}


if __name__ == '__main__':
    app.run(debug=True)

apache2-utils压力测试工具测试:

# 使用说明:
$ ab -n 请求数 -c 并发数  URL


# 同步执行任务
$ ab -n 100 -c 10 http://127.0.0.1:5000/task

Time taken for tests:   55.100 seconds


# 异步执行任务
$ ab -n 100 -c 10 http://127.0.0.1:5000/async_task

Time taken for tests:   0.097 seconds

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
用字符串连接SQL语句并用EXEC执行时,出现名称 '‘不是有效的标识符
原文:用字符串连接SQL语句并用EXEC执行时,出现名称 '‘不是有效的标识符  用字符串连接SQL语句并用EXEC执行时,出现名称 '这里是字符串连接的一条SQL语句‘不是有效的标识符  才发现,在写exec @sql 时,忘了在@sql加(),这样写 exec (@sql) 就不会出错了!
591 0
windows linux 使用python执行系统命令并将结果保存到变量
最近需要用到os.system 发现不能赋值到变量 后查有更新的模块,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使用content=os.
1089 0
使用Chronos执行whenever任务
针对cron任务资源利用率低的问题,我们将whenever任务拆分为多个chronos任务,通过短进程的方式提高了资源利用率,同时还带来了状态可视化、分布式执行以及重试机制等优点。
2107 0
使用Timer和ScheduledThreadPoolExecutor执行定时任务
定时任务是在指定时间执行程序,或周期性执行计划任务。Java中实现定时任务的方法有很多,主要JDK自带的一些方法以及开源程序如Qurtz。
3457 0
使用cProfile等工具来提高python的执行速度
众所周知,python相较于其它语言速度较慢,但是我们可以通过优化的方法来提升效率。
8633 0
Jmeter常用函数之__CSVRead使用
__CSVRead函数用于对脚本进行参数话,当脚本中不同变量需要不同参数值时,可以考虑__CSVRead函数。以登录的用户名、密码为例:实际进行压力测试时,需要模拟使用不同的用户并发访问系统,此时需要我们对脚本中的用户名、密码进行参数化;下面具体介绍如何使用csvread函数:1. 准备好参数取值List清单,文件格式为:csv或者txt文件,里面保存变量要读取的参数值,每个变量间用逗号相隔。
883 0
XamlReader动态使用xaml
原文:XamlReader动态使用xaml xamlload先在xaml做出一个grid,命名xgrid 用和前面写 但是位置不一样的按钮 private void button_Click(obje...
656 0
696
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载