[ 
https://issues.apache.org/jira/browse/TINKERPOP-1599?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette closed TINKERPOP-1599.
---------------------------------------
    Resolution: Fixed

> implement real gremlin-python driver
> ------------------------------------
>
>                 Key: TINKERPOP-1599
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1599
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: python
>    Affects Versions: 3.2.3
>            Reporter: David M. Brown
>            Assignee: David M. Brown
>             Fix For: 3.2.5
>
>
> It is high time that gremlin-python comes packaged with a real driver. After 
> watching the community discussion, it seems that the way to go will be to use 
> the {{concurrent.futures}} module with multithreading to provide asynchronous 
> I/O. While the default underlying websocket client library will remain 
> Tornado due to Python 2/3 compatibility issues, this should be decoupled from 
> the rest of the client and easy to replace.
> With this is mind, I created a baseline client implementation with [this 
> commit|https://github.com/apache/tinkerpop/commit/fb7e7f255585956abbb854fcc5dd3138113cf454]
>  in a topic branch {{python_driver}}. Some things to note:
> - All I/O is performed using the {{concurrent.futures}} module, which 
> provides a standard 2/3 compatible future interface.
> - The implementation currently does not include the concept of a cluster, 
> instead it assumes a single host.
> - The {{transport}} interface makes it easy to plug in client libraries by 
> defining a simple wrapper.
> - Because this is an example, I didn't fix all the tests to work with the new 
> client implementation. Instead I just added a few demo tests. If we decide to 
> move forward with this I will update the original tests.
> The resulting API looks like this for a simple client:
> {code}
> client = Client('ws://localhost:8182/gremlin', 'g')
> g = Graph().traversal()
> t = g.V()
> future_result_set = client.submitAsync(t.bytecode)
> result_set = future_result_set.result()
> results = result_set.all().result()
> client.close()
> {code}
> Using the {{DriverRemoteConnection}}:
> {code}
> conn = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g')
> g = Graph().traversal().withRemote(conn)
> t = g.V()
> results = t.toList()
> conn.close()
> {code}
> If you have a minute to check out the new driver code that would be great, I 
> welcome feedback and suggestions. If we decide to move forward like this, I 
> will proceed to finish the driver implementation.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to