aiogremlin is a port of the official Gremlin-Python designed for integration with event loop based asynchronous Python networking libraries, including asyncio, aiohttp, and tornado. It uses the async/await syntax introduced in PEP 492, and is therefore Python 3.5+ only.
aiogremlin tries to follow Gremlin-Python as closely as possible both in terms of API and implementation. It is regularly rebased against the official Apache Git repository, and will be released according to the TinkerPop release schedule.
Note that this NOT an official Apache project component, it is a THIRD PARTY PACKAGE!
The latest release of
aiogremlin is 3.2.4.
- Python 3.5+
- TinkerPop 3.2.4
- aiohttp 1.3.3
- PyYAML 3.12
Install using pip:
$ pip install aiogremlin
aiogremlin is very similar to Gremlin-Python, except it is all async, all the time.
Submit a script to the Gremlin Server:
>>> import asyncio >>> from aiogremlin import DriverRemoteConnection, Graph >>> loop = asyncio.get_event_loop() >>> async def go(loop): ... remote_connection = await DriverRemoteConnection.open( ... 'ws://localhost:8182/gremlin', 'g') ... g = Graph().traversal().withRemote(remote_connection) ... vertices = await g.V().toList() ... return vertices >>> results = loop.run_until_complete(go(loop)) >>> results # [v, v, v, v, v, v]
The above example demonstrates how
aiogremlin uses the
event loop to drive communication with the Gremlin
Server, but the rest of examples are written as if they were run in a Python
interpreter. In reality, this isn’t possible, so remember, code must
be wrapped in a coroutine and run with the event loop.
Contributions are welcome. If you find a bug, or have a suggestion, please open an issue on Github. If you would like to make a pull request, please make sure to add appropriate tests and run them:
$ python setup.py test
In the future there will be CI and more info on contributing.