Skip to content

feat: add optional pyomq backend for ZMQ connectors - #281

Open
paddor wants to merge 1 commit into
plugboard-dev:mainfrom
paddor:pyomq-zmq-backend
Open

feat: add optional pyomq backend for ZMQ connectors#281
paddor wants to merge 1 commit into
plugboard-dev:mainfrom
paddor:pyomq-zmq-backend

Conversation

@paddor

@paddor paddor commented Sep 1, 2026

Copy link
Copy Markdown
  • Add PLUGBOARD_ZMQ_BACKEND backend selector for ZMQ imports.
  • Keep existing PyZMQ behavior as default when env var is unset or empty.
  • Support PLUGBOARD_ZMQ_BACKEND=pyomq for ZMQChannel and ZMQProxy.
  • Add plugboard[omq] optional extra with pyomq>=0.20.1,<1.
  • Add backend selection tests plus pyomq socket/proxy smoke coverage.
  • Use bounded proxy polling and short pyomq close drain window so pubsub close sentinel is delivered reliably.

Benchmarks:

  • Benchmarked Plugboard ZMQChannel over TCP loopback with 2 Python processes, multipart [topic, payload], pickle/unpickle included, best of 5 runs.
  • 128 B payload: PyZMQ 33.0k msg/s, pyomq 145.0k msg/s, about 4.4x faster.
  • 1 KiB payload: PyZMQ 32.4k msg/s, pyomq 147.1k msg/s, about 4.5x faster.
  • 8 KiB payload: PyZMQ 30.0k msg/s, pyomq 128.2k msg/s, about 4.3x faster.

Add a small backend selector for ZMQ imports so existing PyZMQ behavior remains default while PLUGBOARD_ZMQ_BACKEND=pyomq can use pyomq.

Wire the ZMQ channel and proxy through the selector, add the optional plugboard[omq] extra, and cover backend selection plus pyomq socket/proxy smoke paths.
@paddor paddor changed the title Add optional pyomq backend for ZMQ connectors feat: add optional pyomq backend for ZMQ connectors Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant