onvif-zeep-async
Async Python Client for ONVIF Camera
What it is and what it does
This package provides an async Python client for ONVIF IP cameras, wrapping the zeep SOAP/WSDL engine with aiohttp for fully non-blocking network I/O. Every camera operation—hostname retrieval, PTZ control, stream configuration—is awaitable, making it suitable for concurrent camera management in asyncio applications. The package bundles WSDL files so you don't need to download them separately, and it handles WS-Security authentication (with optional digest encryption), clock skew compensation, and NAT URL rewriting for cameras behind port forwards.
You instantiate an ONVIFCamera with IP, port, and credentials, call update_xaddrs() to discover available services, then invoke operations like devicemgmt.GetHostname() or ptz.GetConfiguration() as async methods. The package exposes every ONVIF operation defined in the bundled WSDLs and lets you create custom services if needed. It depends on aiohttp for transport, zeep for SOAP/WSDL parsing, ciso8601 for fast timestamp parsing, and yarl for URL handling.
Use it for:
- Monitor and control multiple IP cameras concurrently in a single asyncio event loop without blocking.
- Retrieve camera metadata (hostname, system time, network config) and configure settings like date/time or hostname.
- Automate PTZ (pan-tilt-zoom) camera movements and stream URI discovery for video playback.
- Build a camera management dashboard or integration layer that queries many cameras in parallel.
- Handle cameras behind NAT by rewriting advertised URLs to match your port-forward configuration.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Async Python client for ONVIF IP cameras using asyncio and aiohttp, enabling awaitable SOAP calls to camera services like device management and PTZ control.
Yes. Active maintenance, low install friction, permissive MIT license, no known vulnerabilities, and a clear async-first design make this a solid choice for Python 3.10+ projects that need ONVIF camera control. Install if you're building asyncio-based camera management or monitoring; skip if you need synchronous I/O or support for Python versions below 3.10.
Install
onvif-zeep-async on PyPI
pip
pip install onvif-zeep-asyncuv
uv add onvif-zeep-asyncpoetry
poetry add onvif-zeep-asyncInstalling onvif-zeep-async
Before you install
Low friction: pure Python wheel with five runtime dependencies (aiohttp, httpx, zeep, ciso8601, yarl). Active maintenance—last commit 2026-08-10, release 39 days old, no archived status.
License in practice
MIT license is permissive; you can use, modify, and distribute this package with minimal restrictions in commercial or open-source projects.
Quickstart
pip install onvif-zeep-async
import asyncio
from onvif import ONVIFCamera
async def main():
cam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd')
await cam.update_xaddrs()
resp = await cam.devicemgmt.GetHostname()
print(resp.Name)
await cam.close()
asyncio.run(main())
Requires Python 3.10 or newer; camera must be reachable on the network and support ONVIF protocol.
Verify before relying
- Whether bundled WSDL files cover all ONVIF camera models or only a subset of the ONVIF specification.
- Performance characteristics when managing multiple concurrent camera connections.
- Compatibility with non-standard ONVIF implementations or vendor-specific extensions.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — aiohttp, httpx, zeep, ciso8601, yarl |
| Maintenance | actively maintained — 39 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 162,416/month — #10,604 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: onvif_zeep_async-4.2.1-py3-none-any.whl
Keywords: ONVIF, Camera, IPC
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
pyimouapiAsync Python client for Imou Open Platform…
permissive · top 15,000 on PyPI
reolink-aioAsync Python client for Reolink IP NVR and…
permissive · top 15,000 on PyPI
zeepZeep is a Python SOAP client that handles SOAP…
permissive · top 1,000 on PyPI
pytapoPyTapo is a Python library that communicates…
permissive · top 15,000 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
motioneye-clientAn async Python client library for querying and…
permissive · top 15,000 on PyPI
netsuiteAsync client for NetSuite's SuiteTalk SOAP,…
permissive · top 15,000 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
aiosignalProvides a Signal class for managing lists of…
permissive · top 100 on PyPI
netsuitesdkA Python SDK that wraps NetSuite's SOAP web…
permissive · top 15,000 on PyPI