Гоблин получает 'WSServerHandshakeError'

Я новичок в этом Гремлин-водителе по имени Гоблин. Я следил за введением / обучением по Goblin - Async Python toolkit. Как описано в документации, я создал сопрограмму Python:

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)

Когда я запускал скрипт Python, программа, казалось, работала в бесконечном цикле. На этом этапе ни консоль, ни ошибки не отображались.

Надеюсь, кто-нибудь может мне помочь! Алан

1 ответ

Трудно точно сказать, что здесь происходит, поскольку пример кода неполон и содержит ошибки, не связанные с кодом Гоблина. Например, следующее выдаст ошибку типа:

app = loop.run_until_complete(loop)

Убедитесь, что вы используете Goblin 2.0.0, на котором запущен сервер Gremlin (TinkerPop 3.2.4) localhost:8182и попробуйте следующее:

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, так как я являюсь автором этой библиотеки.

Другие вопросы по тегам