Возвращение индикатора успеха при выполнении Отложено в витой

Я использую Twisted, и я хотел бы, чтобы одна отложенная операция возвращала индикатор, если он выполнен успешно или нет, как при использовании DeferredList.

Это работает с несколькими отложениями:

my_query = deferToThread(self.mongo_pool.db[self.collection_name].find_one,
        {
            some_query
        }
    )

(my_success_1, my_data_1), (my_success_2, my_data_2) = 
         await DeferredList([ensureDeferred(my_query_1), ensureDeferred(my_query_2)])

Но выполнение этого с одним отложенным возвращает данные напрямую:

my_return = await ensureDeferred(my_query)

Когда я обертываю его под отложенным, приложение просто зависает и не отвечает:

my_return = await Deferred(ensureDeferred(my_query))

Итак, что я в итоге сделал, чтобы получить этот индикатор, так это то, что он работает, но он определенно выглядит неправильно:

my_return = await DeferredList([ensureDeferred(my_query)])
(my_success_indicator, my_data) = my_return[0]

Есть ли лучший способ сделать это? Я на витой версии 17.05

0 ответов

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