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.

Indices and tables