【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()
相关推荐
DolphinDB智臾科技1 分钟前
工业数据流通难题与突破:基于时序数据库的选型思路
数据库·物联网·时序数据库
问道飞鱼2 分钟前
【数据库知识】MySQL 数据类型详解:选型指南与实战最佳实践
数据库·mysql·数据类型
Xyz996_4 分钟前
MySQL试验部署
数据库·mysql
小趴菜不能喝5 分钟前
MySQL UTC时间
数据库·mysql
YJlio8 分钟前
Autologon 学习笔记(9.16):无感登录的正确打开方式(原理、风险与替代方案)
数据库·笔记·学习
W***95249 分钟前
Sql Server数据库远程连接访问配置
数据库
Han.miracle11 分钟前
数据库圣经--简单使用索引
java·数据库·sql·索引
零日失眠者14 分钟前
【Oracle入门到删库跑路-04】基础入门:基本查询操作
数据库·oracle
hanyi_qwe20 分钟前
Mysql备份与还原
数据库·mysql
cqsztech22 分钟前
如何打造一个非CDB的Oracle 19c docker 镜像
数据库·docker·oracle