aiogremlin¶
aiogremlin is an asynchronous DSL based on the official Gremlin-Python GLV 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 released according to the TinkerPop release schedule.
Note that this NOT an official Apache project component, it is a THIRD PARTY PACKAGE!
Releases¶
The latest release of aiogremlin
is 3.3.1.
Requirements¶
Python 3.5 +
TinkerPop 3.2.6 +
Dependencies¶
aiohttp 2.2.5 +
gremlinpython
PyYAML 3.12 +
Installation¶
Install using pip:
$ pip install aiogremlin==<tinkerpop_version>
For this version, a separate install of gremlinpython is required:
$ pip install gremlinpython==<tinkerpop_version> --no-deps
Getting Started¶
aiogremlin
has a simple API that is quite easy to use. However, as it relies
heavily on asyncio and aiohttp, it is helpful to be familiar with the
basics of these modules.
aiogremlin
is very similar to Gremlin-Python, except it is all async, all the time.
Minimal Example¶
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[1], v[2], v[3], v[4], v[5], v[6]]
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.
Contribute¶
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.
Contents:
- Using
aiogremlin
- aiogremlin API
- aiogremlin package
- Subpackages
- aiogremlin.driver package
- Subpackages
- Submodules
- aiogremlin.driver.client module
- aiogremlin.driver.cluster module
- aiogremlin.driver.connection module
- aiogremlin.driver.pool module
- aiogremlin.driver.protocol module
- aiogremlin.driver.provider module
- aiogremlin.driver.resultset module
- aiogremlin.driver.server module
- Module contents
- aiogremlin.process package
- aiogremlin.remote package
- aiogremlin.structure package
- aiogremlin.driver package
- Submodules
- aiogremlin.exception module
- Module contents
- Subpackages
- External References
- aiogremlin package