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