Github user davebshow commented on the issue:

    https://github.com/apache/tinkerpop/pull/478
  
    I put together a quick example of how this can be implemented in 
gremlin-python. Obviously the example is incomplete, but hopefully it can help 
move the discussion forward: 
https://github.com/apache/tinkerpop/commit/aa85a9b5278c55aa28014aa135c8498428295071
    
    These changes result in the following APIs depending on which Python future 
is returned by the driver, but the GLV doesn't care as long as it supports 
Python's common future API:
    
    - Tornado w/Python 2.7+ returning a `tornado.concurrent.Future`
    ```python
    @gen.coroutine
    def go():
        vertices = yield g.V().promise(lambda x: x.toList())
        assert len(vertices) == 6
        count = yield g.V().count().promise(lambda x: x.next())
        assert count == 6
    
     loop.run_sync(go)
    ```
    - Asyncio/Tornado with Python 3.5 async/await syntax returning 
`asyncio.Future` or `tornado.concurrent.Future`
    ```python
    async def go():
        vertices = await g.V().promise(lambda x: x.toList())
        assert len(vertices) == 6
        count = await g.V().count().promise(lambda x: x.next())
        assert count == 6
    
     loop.run_until_complete(go())
    ```
    - Driver with Python 2.7+ that returns `concurrent.futures.Futures` (or 
backport) 
    ```python
    def go():
        vertices = g.V().promise(lambda x: x.toList()).result()
        assert len(vertices) == 6
        count = g.V().count().promise(lambda x: x.next()).result()
        assert count == 6
    ```


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to