Удаление и заполнение большого графика в CosmosDB с помощью зависания драйвера Gremlin Python - PullRequest
0 голосов
/ 01 декабря 2018

Я опускаю и заново создаю большой граф с Python на CosmosDB на основе этого образца .График отбрасывается с помощью g.V().drop(), вершины создаются с помощью g.V().addV..., а ребра - с помощью g.V().addE....

Однако при многократном запуске процедуры после изменения количества элементов или времени, когда добавление застревает - безрезультат от client.submitAsync().

1 Ответ

0 голосов
/ 01 декабря 2018

При выставлении чека до операторов addE() и addV() я понял, что график не был полностью пустым после drop().Кажется, это занимает несколько секунд.

Поэтому я ставлю цикл после drop(), пока график не станет полностью пустым, прежде чем я продолжу операции add.

def drop_graph(client):

    client.submitAsync("g.V().drop()").result()

    remain = None
    while remain != 0:
        callback = client.submitAsync("g.V().count()")
        for result in callback.result():
            previous = remain
            remain = result[0]
            print('remaining nodes {}'.format(remain))
            if remain > 0:
                sleep(1)
            if previous == remain:
                client.submitAsync("g.V().drop()").result()

РЕДАКТИРОВАТЬ: Кажется, есть ошибка либо в gremlin.python.driver, либо на бэкэнд-сервере Gremlin - в некоторых случаях не было никакого прогресса в отбрасывании всех вершин.Для этого я добавил кик-старт для другого drop() на случай, если оставшиеся узлы не уменьшатся.

...