витая: разница между `defer.execute` и` threads.deferToThread`
В чем разница междуdefer.execute()
а такжеthreads.deferToThread()
в витой? Оба принимают одинаковые аргументы - функцию и параметры для вызова - и возвращают deferred, который будет вызван результатом вызова функции.
threads
Версия явно заявляет, что она будет запущена в потоке. Однако еслиdefer
версии нет, тогда какой смысл ее называть? Код, работающий в реакторе, никогда не должен блокировать, поэтому любая функция, которую он вызывает, не должна блокироваться. В этот момент вы могли бы просто сделатьdefer.succeed(f(*args, **kwargs))
вместоdefer.execute(f, args, kwargs)
с такими же результатами.