PythonライブラリノックDay109 外部ライブラリ #プログラミング #python #library

テクノロジー



Pythonのライブラリの紹介です。それぞれの説明と使用例は以下になります。

L 325. zeromq(メッセージ指向の通信ライブラリ)
ZeroMQ は、メッセージ指向の通信ライブラリで、スレッド、プロセス、サーバー間の通信を高速かつ非同期に行うための ソケットライクなインタフェース を提供します。pyzmq はその Python バインディングです。

▼主な機能
プッシュ/プル、パブリッシュ/サブスクライブなど複数の通信パターンをサポート
TCP/IP、IPC、インメモリ通信など多様なトランスポート対応
非同期通信・分散処理・スケーラブルなアーキテクチャ構築が可能

▼使い方(サンプル)
#送信側(Push)
import zmq

context = zmq.Context()
socket = context.socket(zmq.PUSH)
socket.bind(“tcp://*:5555”)

socket.send_string(“Hello from ZeroMQ”)

#受信側(Pull)
import zmq

context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.connect(“tcp://localhost:5555”)

message = socket.recv_string()
print(“Received:”, message)

L 326. kombu(メッセージングライブラリ)
Kombu は、メッセージブローカー(RabbitMQ、Redisなど)とのやりとりを抽象化する メッセージングライブラリです。Celery の内部でも使われています。

▼主な機能
Queue の作成、タスクの送信・受信を抽象化
ブローカー非依存のAPI(RabbitMQ、Redis、Amazon SQS などに対応)
シリアライザやエンコーダの切り替えが容易(JSON、pickle、msgpackなど)

▼使い方(サンプル)
from kombu import Connection, Exchange, Queue

# RabbitMQとの接続
with Connection(‘amqp://guest:guest@localhost//’) as conn:
exchange = Exchange(“example”, type=”direct”)
queue = Queue(“example-queue”, exchange, routing_key=”example”)

producer = conn.Producer(serializer=’json’)
producer.publish(
{“hello”: “kombu”},
exchange=exchange,
routing_key=”example”,
declare=[queue]
)

with conn.Consumer(queue, callbacks=[lambda body, message: print(body)]):
conn.drain_events(timeout=2)

L 327. celery(非同期タスクキュー/分散ジョブキュー)
Celery は Python 製の 非同期タスクキュー/分散ジョブキュー です。バックグラウンドでジョブ(タスク)を実行するために使われ、Kombu を介して RabbitMQ や Redis を利用します。

▼主な機能
タスクの非同期実行・定期実行(スケジューリング)
ワーカー(並列処理)によるスケーラブルな分散処理
複数バックエンド(Redis, RabbitMQ など)とストレージ(結果保存)

▼使い方(サンプル)
#インストール
pip install celery

#tasks.py
from celery import Celery

app = Celery(‘mytasks’, broker=’redis://localhost:6379/0′)

@app.task
def add(x, y):
return x + y

#タスクの呼び出し
from tasks import add

result = add.delay(4, 6)
print(result.get(timeout=10)) # 結果:10

#ワーカー起動(コマンドライン)
celery -A tasks worker –loglevel=info

Comments

Copied title and URL