'Run a synchronous function in the background without disrupting
the main thread. Useful for long-running jobs.'

@gen.coroutine
def run_in_background(self, _func, *args, **kwargs):

    res = (yield self._executor.submit(_func, *args, **kwargs))
    raise gen.Return(res)
