Небольшой сервер на торнадо, пример обработчика запроса:
class MessageHandler(tornado.web.RequestHandler):
@gen.coroutine
def post(self):
if self.request.body == 'aaa':
self.write("Запрос получен")
self.finish()
MyFunc() # Функция которая может выполняться длительное время
else:
self.write("Неверный запрос")
При выполнении условия я отвечаю клиенту что все хорошо, и чтобы клиент не ждал завершения обработки запроса (которое может затянуться функцией MyFunc()) я выполняю self.finish() - правильно ли я поступаю в этом случае?
Второй вопрос по поводу функции MyFunc() - в ней будут выполнятся запросы к другим сервисам с сохранением информации на HDD, т.е. она блокирующая. Я понимаю что сервер не будет обрабатывать следующие запросы пока она не завершится, поэтому есть желание вынести ее в отдельный поток, как рассказано в этой статье
https://habrahabr.ru/post/231201/ - верная ли это мысль?