校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > python 常用的異步框架匯總整理

python 常用的異步框架匯總整理

熱門標簽:洪澤縣地圖標注 老人電話機器人 百度地圖標注位置怎么修改 梅州外呼業務系統 無錫客服外呼系統一般多少錢 北京電信外呼系統靠譜嗎 大連crm外呼系統 高德地圖標注是免費的嗎 地圖標注視頻廣告

正文開始

asyncio 是 Python 3.4版本引入的標準庫,直接內置了對異步IO的支持。

asyncio 在單線程內部維護了 EventLoop 隊列,然后把需要執行異步IO的任務添加到 EventLoop 隊列中,至于任務的完成通過類似回調的邏輯是實現后續的任務。如果你有 JavaScript的基礎那么理解python的 asyncio 很簡單,關鍵字、語法以及實現的原理都極其類似。

import asyncio

async def main():
    print('Hello ...')
    await asyncio.sleep(1)
    print('... World!')

# Python 3.7+
asyncio.run(main())

1. Tornado

Tornado 是一個Python web框架和異步網絡庫,起初由 FriendFeed 開發. 通過使用非阻塞網絡I/O, Tornado可以支撐上萬級的連接,處理 長連接, WebSockets ,和其他需要與每個用戶保持長久連接的應用。

下面貼上官方 demo :

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

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

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

2. Aiohttp

一個基于 asyncio 異步的web框架,支持 websocket,不需要寫回掉的代碼、有著豐富的生態、中間價等、開箱即用的服務端與客戶端。

下面貼上官方 demo :

# 客服端代碼
import aiohttp
import asyncio

async def main():

    async with aiohttp.ClientSession() as session:
        async with session.get('http://python.org') as response:

            print("Status:", response.status)
            print("Content-type:", response.headers['content-type'])

            html = await response.text()
            print("Body:", html[:15], "...")

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
# 服務端代碼
from aiohttp import web

async def handle(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(text=text)

async def wshandle(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    async for msg in ws:
        if msg.type == web.WSMsgType.text:
            await ws.send_str("Hello, {}".format(msg.data))
        elif msg.type == web.WSMsgType.binary:
            await ws.send_bytes(msg.data)
        elif msg.type == web.WSMsgType.close:
            break

    return ws


app = web.Application()
app.add_routes([web.get('/', handle),
                web.get('/echo', wshandle),
                web.get('/{name}', handle)])

if __name__ == '__main__':
    web.run_app(app)

aiohttp的生態:

  • aiohttp-session 為 aiohttp 服務提供 sessions支持,同時支持數據持久化數據庫。
  • aiohttp-debugtoolbar 為 aiohttp 提供調試的工具(記錄 asyncio 異常的堆棧信息)。
  • aiohttp-security 為aiohttp提供認證以及權限相關的插件。
  • aiohttp-devtools aiohttp開發工具,提供開發環境的部署、靜態資源的代理。
  • aiohttp-cors CORS 跨域認證支持。
  • aiohttp-sse 服務端事件的支持(一種服務端推送消息的服務)。
  • pytest-aiohttp pytest 測試框架的支持。
  • aiohttp-mako Mako 服務端模板渲染的支持。
  • aiohttp-jinja2 Jinja2 服務端模板渲染的支持(大名鼎鼎的flask的渲染引擎)。
  • aiozipkin 分布式系統中對服務追蹤,為微服務中延時問題提供數據支持。

aiohttp數據庫支持:

aiopg PostgreSQL異步支持。
aiomysql MySql 異步支持。
aioredis Redis 異步支持。
asyncpg 另外一個對 PostgreSQL 異步支持,比 aiopg 效率高,但是 api 不通用。

3.Sanic

Sanic 是一個 Python 3.7+ 的基于 asyncio 的 web 服務器和web框架,目標是提供一種簡單的方法來啟動和運行一個易于構建、擴展和終極性能HTTP服務器,是一個比較類似 falsk 的異步web框架。

To provide a simple way to get up and running a highly performant HTTP server that is easy to build, to expand, and ultimately to scale.

官方demo:

from sanic import Sanic
from sanic.response import json

app = Sanic("My Hello, world app")

@app.route('/')
async def test(request):
    return json({'hello': 'world'})

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

4. FastAPI

FastAPI 是一個用于構建API的高性能web框架,基于Python3.6+并支持標準的 Python 類型提示。同時是最快的 Python web框架之一,可與 NodeJS 和 Go 比肩(主要歸功于 Starlette 和 Pydantic)。

from typing import Optional

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}

# 啟動 uvicorn main:app --reload
# pip install uvicorn[standard]

5. Ruia

一個基于asyncio和aiohttp的異步爬蟲框架,目標在于讓開發者編寫爬蟲盡可能地方便快速。國人開發中文文檔的支持,方便快速的構建爬蟲項目,自定義HTML解析工具,快速獲取頁面數據。

官方demo:

import asyncio

from ruia import Item, TextField, AttrField


class HackerNewsItem(Item):
    target_item = TextField(css_select='tr.athing')
    title = TextField(css_select='a.storylink')
    url = AttrField(css_select='a.storylink', attr='href')


async def test_item():
    url = 'https://news.ycombinator.com/news?p=1'
    async for item in HackerNewsItem.get_items(url=url):
        print('{}: {}'.format(item.title, item.url))


if __name__ == '__main__':
    # Python 3.7 Required.
    asyncio.run(test_item()) 

    # For Python 3.6
    # loop = asyncio.get_event_loop()
    # loop.run_until_complete(test_item())

總結

隨著 python 社區對異步支持的愈發友好,異步框架的生態也愈發完善。Tornado 是我第一個接觸到的一步框架,現如今伴隨著最快 python web 框架之爭,Tornado也漸漸跌落神壇。但是至于誰是最快的并不重要,重要的是生態,避免重復造輪子才是重要的。

PS:

  1. 我記得之前了解 Sanic 的時候它還是基于 aiohttp 開發的 web 框架,現如今已經重構了大部分代碼,核心組件也都自己實現。
  2. tornado 雖然語法過時了,但是應該是最成熟、最早以及文檔最多的一個異步框架。
  3. 之前用tornado的時候還需要造關于異步操作的輪子,現如今生態日趨完善。

最后如果你想使用異步的框架,那么記得所有的IO操作均需要異步操作實現,否則會大大影響性能。 (比如第三方的短信服務不能直接使用同步代碼的sdk )

參考資料

Aiohttp docs

Sanic 中文

Uvloop

Tornado 中文

以上就是python 常用的異步框架匯總整理的詳細內容,更多關于python異步框架匯總的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 支持python的分布式計算框架Ray詳解
  • 5分鐘快速掌握Python定時任務框架的實現
  • Python編程pydantic觸發及訪問錯誤處理

標簽:長春 怒江 吉林 安慶 洛陽 泉州 清遠 岳陽

巨人網絡通訊聲明:本文標題《python 常用的異步框架匯總整理》,本文關鍵詞  python,常用的,常,用的,異步,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python 常用的異步框架匯總整理》相關的同類信息!
  • 本頁收集關于python 常用的異步框架匯總整理的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    色婷婷综合久久| 日韩亚洲欧美在线观看| 欧美主播一区二区三区美女| 在线欧美小视频| 欧美吻胸吃奶大尺度电影 | 国产乱妇无码大片在线观看| 成人网男人的天堂| 久久综合狠狠综合久久综合88 | 国产高清在线精品| 欧美在线免费视屏| 国产欧美日韩卡一| 日本不卡免费在线视频| 成人午夜视频在线| 91精品国产aⅴ一区二区| 国产精品丝袜久久久久久app| 亚洲一区二区三区影院| 国产999精品久久久久久绿帽| 92精品国产成人观看免费| 日韩欧美中文字幕制服| 一区二区激情小说| 成人黄色片在线观看| 精品免费日韩av| 香蕉影视欧美成人| 色综合中文字幕| 久久久久久久网| 青青国产91久久久久久| 欧美在线一区二区| 综合色中文字幕| 国产剧情一区二区| 欧美一区二区三区四区高清| 亚洲韩国一区二区三区| 一本到不卡免费一区二区| 精品国产乱码久久久久久闺蜜| 一区二区三区日韩欧美精品| 国产91精品久久久久久久网曝门| 制服视频三区第一页精品| 亚洲国产视频一区二区| 99re成人精品视频| 国产精品传媒入口麻豆| 国产一区二区三区四区五区美女 | 欧美日韩国产一级| 亚洲日本va在线观看| 国产成人亚洲综合a∨猫咪| 日韩一区二区三区免费看| 亚洲一区二区三区影院| 欧美性生活久久| 欧美aaaaaa午夜精品| 精品国产sm最大网站| 7777精品伊人久久久大香线蕉完整版 | 99精品在线免费| 亚洲免费观看高清完整版在线| 在线亚洲精品福利网址导航| 亚洲观看高清完整版在线观看| 欧美精品丝袜久久久中文字幕| 美女脱光内衣内裤视频久久网站| 欧美刺激脚交jootjob| 国产精品99久久久久久久女警| 国产精品成人一区二区艾草| 色婷婷激情一区二区三区| 日韩电影在线观看网站| 日韩免费观看2025年上映的电影| 国产精品一区二区三区99| 国产精品久久久久久久岛一牛影视 | 日本视频一区二区| 国产三级一区二区| 欧美系列亚洲系列| 国产高清在线精品| 日日摸夜夜添夜夜添国产精品| 亚洲精品一区二区三区影院| 91在线视频播放| 久久精品国产99国产| 国产欧美视频在线观看| 欧美视频精品在线| 国内精品在线播放| 一卡二卡三卡日韩欧美| 久久精品视频一区二区三区| 日本高清不卡在线观看| 精品在线视频一区| 亚洲图片有声小说| 一区免费观看视频| 欧美va天堂va视频va在线| 亚洲午夜精品网| 91一区二区三区在线观看| 中文字幕视频一区二区三区久| 欧美国产成人精品| 欧美一级高清片| 麻豆成人久久精品二区三区红 | hitomi一区二区三区精品| 亚洲综合自拍偷拍| 95精品视频在线| 性欧美大战久久久久久久久| 亚洲黄色性网站| 一区二区三区色| 一区二区三区四区亚洲| 亚洲精品一区二区三区香蕉| 一区二区三区四区亚洲| 韩国av一区二区| 精品成人一区二区| 免费看日韩精品| 911精品产国品一二三产区| 午夜a成v人精品| 久久免费美女视频| 99re视频精品| 国产精品美女久久久久久2018| 国产日韩欧美高清在线| 欧美日韩中字一区| 国产不卡视频一区| 国产在线视频一区二区三区| 亚洲欧美日韩国产综合在线 | 亚洲欧美视频在线观看| 欧美日本乱大交xxxxx| 久久99在线观看| 亚洲宅男天堂在线观看无病毒| 5566中文字幕一区二区电影| 美女在线一区二区| 国产精品久久久久婷婷| 日本一区二区三区在线不卡| 欧美日韩在线播| 亚洲欧洲日韩av| 欧美日韩一级片在线观看| 国产揄拍国内精品对白| 一区二区三区成人在线视频| 欧美精品高清视频| 91蝌蚪porny成人天涯| 美女一区二区三区在线观看| 亚洲乱码中文字幕| 欧美一区二区成人| 欧美日韩另类国产亚洲欧美一级| 欧美精品自拍偷拍动漫精品| 欧美夫妻性生活| 欧美精品丝袜中出| 精品日韩在线观看| 国产精品久久久久久久久动漫| 成人黄色国产精品网站大全在线免费观看 | 亚洲综合精品久久| 亚洲精品一区二区三区蜜桃下载 | 亚洲精品视频观看| 五月天一区二区| 蜜桃在线一区二区三区| 国产一区三区三区| 99亚偷拍自图区亚洲| 一本久道久久综合中文字幕| 91麻豆精品国产91久久久使用方法| 欧美一区二区福利视频| 国产精品色呦呦| 亚洲18影院在线观看| 久久99精品国产麻豆婷婷洗澡| bt7086福利一区国产| 欧美日韩一级二级| 久久综合色天天久久综合图片| 中文字幕一区二区三区在线不卡| 婷婷亚洲久悠悠色悠在线播放 | 天天色天天爱天天射综合| 久久国产成人午夜av影院| 91丨九色丨蝌蚪丨老版| 欧美猛男gaygay网站| 国产午夜一区二区三区| 亚洲成人av一区| 粉嫩av一区二区三区| 91精品国产高清一区二区三区| 国产精品久久久久7777按摩| 日韩av不卡一区二区| 91亚洲精华国产精华精华液| 精品区一区二区| 亚洲国产精品久久一线不卡| 国产成人av资源| 欧美一区二区啪啪| 一区二区三区在线免费观看| 国产一区二区三区四区五区美女| 欧美片网站yy| 亚洲精品成a人| 成人高清在线视频| 日韩一区二区三区视频在线观看| 亚洲你懂的在线视频| 国产福利91精品一区二区三区| 欧美日韩在线播放三区| 亚洲精品国产高清久久伦理二区| 国产成人亚洲综合a∨猫咪| 精品少妇一区二区三区| 石原莉奈在线亚洲三区| 欧洲精品一区二区三区在线观看| 国产精品欧美久久久久无广告| 国产一区二区三区免费看| 欧美一区二区免费视频| 天天亚洲美女在线视频| 色婷婷国产精品| 日韩美女啊v在线免费观看| 国产一本一道久久香蕉| 精品国产一区二区三区久久影院| 日av在线不卡| 欧美一区二区三区视频免费 | 91精品国产福利| 日韩精品亚洲一区二区三区免费| 日本精品一级二级| 亚洲欧美另类图片小说| 在线观看免费亚洲| 亚洲综合激情另类小说区| 欧美午夜电影网| 天天爽夜夜爽夜夜爽精品视频| 欧美另类z0zxhd电影|