Как я могу запустить длительную функцию блокировки одновременно с Tornado IOLoop - PullRequest
1 голос
/ 27 мая 2020

У меня есть приложение торнадо:

if __name__ == "__main__":
    app = make_app()
    app.listen(8090)

    tornado.ioloop.IOLoop.current().start()

Как я могу одновременно выполнять длительную задачу?

В частности, у меня есть redis pubsub , который будет уведомить мое приложение торнадо об обновленных токенах авторизации.

Я пробовал это:

tornado.ioloop.IOLoop.current().run_in_executor(None, redis_pubsub.subscribe_to_valid_tokens)

Так как я никогда не жду будущего, похоже, функция не запускается, поэтому я немного застрял в «правильном» способе сделать это.

  • Мне интересно, следует ли мне делать это с отдельным потоком python (или, может быть, использовать библиотеку многопроцессорной обработки с очередью?
  • Можно ли лучше использовать / структуру async / await?
...