GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

aaugustin

websockets – Python 3でのWebSocketの実装

投稿日:

Python 3でのWebSocketの実装

WebSockets

websocketsとは何ですか?

websocketsは、WebSocket サーバークライアントをPythonで構築するためのライブラリであり、正確さとシンプルさに重点を置いています。

Pythonの標準非同期I / Oフレームワークであるasyncio上に構築されており、洗練されたコルーチンベースのAPIを提供します。

“Hello world!”というクライアントがあります:

#!/usr/bin/env python

import asyncio
import websockets

async def hello(uri):
    async with websockets.connect(uri) as websocket:
        await websocket.send("Hello world!")

asyncio.get_event_loop().run_until_complete(
    hello('ws://localhost:8765'))

そして、エコーサーバがあります(Python≧3.6の場合):

#!/usr/bin/env python

import asyncio
import websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(message)

asyncio.get_event_loop().run_until_complete(
    websockets.serve(echo, 'localhost', 8765))
asyncio.get_event_loop().run_forever()

それは良い見えますか? ここから始めてください

なぜwebsocketsを使うべきですか?

websocketsの開発は、4つの原則によって形作られています。

  1. シンプルさ :あなたが理解する必要があるのは、 msg = await ws.recv()await ws.send(msg)です。 websocketsは接続の管理を行い、アプリケーションに集中することができます。
  2. 堅牢性websocketsは本稼動のために構築されています。 たとえば、問題がPythonコミュニティで広く知られる前に、 バックプレッシャーを正しく処理するのは唯一のライブラリでした。
  3. 品質websocketsは大量にテストされています。 ブランチカバレッジ100%で継続的な統合が失敗します。 また、業界標準のAutobahn Testsuiteにも合格します。
  4. パフォーマンス :メモリの使用は設定可能です。 Cで書かれた拡張機能は高価な操作を加速します。 Linux、macOS、Windows用にあらかじめコンパイルされ、各システムとPythonバージョンのホイールフォーマットでパッケージ化されています。

ドキュメンテーションは、プロジェクトの第一の関心事です。 Docs読んであなた自身のために見に行きましょう。

あなた(またはあなたの会社)がそのように傾けられている場合、プロフェッショナルサポートが利用可能です。 連絡してください

websockets貢献して公式のサポートプロバイダになりたい場合は、教えてください)

なぜ私はwebsocketsを使用すべきではないのですか?

  • コルーチンよりもコールバックを好む場合:WebSocketをPythonで管理するための最良のコルーチンベースのAPIを提供するためにwebsocketsが作成されました。 コールバックベースのAPIの別のライブラリを選択します。
  • 混在したHTTP / WebSocketライブラリを探している場合: websocketsは、WebSocketプロトコルとRFC 7692 :WebSocket用のCompression Extensionsの優れた実装であることを目指しています。 HTTPのサポートは最小限で、HTTPヘルスチェックに十分です。
  • Python 2を使用したい場合: websocketsasyncio構築され、Python 3でのみ動作します。 asyncioにはPython≧3.4が必要です。

ほかに何か?

バグレポート、パッチ、提案を歓迎します! 問題を開くか、 プルリクエストを送信するだけです。

websocketsBSDライセンスの下でリリースされています。







-aaugustin

執筆者: