【python3】tornado高性能编程

  • 使用多进程充分利用cpu
  • 使用异步编程 asyncio
python 复制代码
import asyncio
import time
from abc import ABC
from concurrent.futures import ProcessPoolExecutor
from tornado import web, ioloop, gen


async def async_task(name):
    print(f"start: {name}")
    st = int(time.time())
    time.sleep(3)  # 模拟同步等待 
    await asyncio.sleep(3)  # 模拟异步等待
    result = f"task: {name}, start: {st}, end: {int(time.time())}"
    return result


def run_async_task(name):
    return asyncio.run(async_task(name))


class MainHandler(web.RequestHandler, ABC):
    executor = ProcessPoolExecutor()  # 进程池

    @gen.coroutine
    def get(self):
        task_name = self.get_argument("task", "task-1")
        result = yield self.executor.submit(run_async_task, task_name)
        self.write(result)


def make_app():
    return web.Application([
        (r"/", MainHandler),
    ])


if __name__ == '__main__':
    app = make_app()
    app.listen(8888)
    print("http://localhost:8888/?task=task-X")
    ioloop.IOLoop.current().start()
相关推荐
yaso_zhang7 分钟前
jetson开机之前自启脚本sudo ifconfig 如何不需要输入密码
数据库·postgresql
aoxiang_ywj13 分钟前
SQLite 速成学习
数据库·sqlite
普普通通的南瓜17 分钟前
网站提示 “不安全”?免费 SSL 证书一键解决
网络·数据库·网络协议·算法·安全·iphone·ssl
张3蜂19 分钟前
import org.junit.Test; 是什么
数据库·junit
不惑_19 分钟前
[特殊字符] 在 macOS 上设置 SQLite
数据库·macos·sqlite
不惑_20 分钟前
[特殊字符] 在 Windows 上设置 SQLite
数据库·windows·sqlite
上线就吃代码25 分钟前
【等保测评】数据库数据库配置have_ssl参数为yes
服务器·数据库·ssl
谅望者25 分钟前
数据分析笔记04:抽样方法与抽样分布
数据库·笔记·数据挖掘·数据分析
q***99441 分钟前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
老华带你飞1 小时前
记录生活系统|记录美好|健康管理|基于java+Android+微信小程序的记录生活系统设计与实现(源码+数据库+文档)
android·java·数据库·vue.js·生活·毕设·记录生活系统