2017-05-12 8 views
1

私はこのGremlinドライバにゴブリンと呼ばれるものを使い慣れていません。私はGoblin - Async Python toolkitの紹介/チュートリアルに従っていました。 は、マニュアルで説明したように、私はPythonのコルーチンを作成しました:私は、Pythonスクリプトを実行したときゴブリンは「WSServerHandshakeError」を取得します

loop = asyncio.get_event_loop() 
app = loop.run_until_complete(loop) 
app.register(Person, Knows) 
async def go(app): 
    session = await app.session() 
    leif = Person() 
    leif.name = 'Leif' 
    leif.age = 28 
    jon = Person() 
    jon.name = 'Jonathan' 
    works_with = Knows(leif, jon) 
    session.add(leif, jon, works_with) 
    await session.flush() 
    result = await session.g.E(works_with.id).next() 
    assert result is works_with 
    people = session.traversal(Person) # element class based traversal source 
    async for person in people: 
     print(person) 

、プログラムが無限ループに実行されているように見えました。現時点では結果もエラーもコンソールに表示されませんでした。

誰でも私を助けることができます! Alan

答えて

3

サンプルコードが不完全で、ゴブリンコードに関連しないエラーが含まれているため、ここで何が起こっているのか正確に言うのは難しいです。たとえば、次のように型エラーがスローされます。

app = loop.run_until_complete(loop) 

、あなたがゴブリン2.0.0を使用していることを確認しlocalhost:8182で実行されているグレムリンサーバー(TinkerPop 3.2.4)を持っており、次のことを試してみてください。

import asyncio 
from goblin import element, properties, Goblin 

# Model definition 
class Person(element.Vertex): 
    name = properties.Property(properties.String) 
    age = properties.Property(properties.Integer) 


class Knows(element.Edge): 
    notes = properties.Property(properties.String, default='N/A') 


# Set up event loop and app 
loop = asyncio.get_event_loop() 
app = loop.run_until_complete(Goblin.open(loop)) 

# Register the models with the app 
app.register(Person, Knows) 

async def go(app): 
    session = await app.session() 
    leif = Person() 
    leif.name = 'Leif' 
    leif.age = 28 
    jon = Person() 
    jon.name = 'Jonathan' 
    works_with = Knows(leif, jon) 
    session.add(leif, jon, works_with) 
    await session.flush() 
    result = await session.g.E(works_with.id).next() 
    assert result is works_with 
    people = session.traversal(Person) 
    async for person in people: 
     print(person) 
    # Make sure to close the app 
    await app.close() 

# Run the coroutine 
loop.run_until_complete(go(app)) 

これは私がこのライブラリの著者であるため、Githubに私に連絡することを検討してください。

関連する問題