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