code: def sync_fetch(self, task):
          '''Synchronization fetch, usually used in xmlrpc thread'''
          if not self._running:
              return self.ioloop.run_sync(functools.partial(self.async_fetch, task, lambda t, _, r: True))
  
          wait_result = threading.Condition()
          _result = {}
  
          def callback(type, task, result):
              wait_result.acquire()
              _result['type'] = type
              _result['task'] = task
              _result['result'] = result
              wait_result.notify()
              wait_result.release()
  
          wait_result.acquire()
          self.ioloop.add_callback(self.fetch, task, callback)
          while 'result' not in _result:
              wait_result.wait()
          wait_result.release()
          return _result['result'f sync_fetch(self, task):
          '''Synchronization fetch, usually used in xmlrpc thread'''
          if not self._running:
              return self.ioloop.run_sync(functools.partial(self.async_fetch, task, lambda t, _, r: True))
  
          wait_result = threading.Condition()
          _result = {}
  
          def callback(type, task, result):
              wait_result.acquire()
              _result['type'] = type
              _result['task'] = task
              _result['result'] = result
              wait_result.notify()
              wait_result.release()
  
          wait_result.acquire()
          self.ioloop.add_callback(self.fetch, task, callback)
          while 'result' not in _result:
              wait_result.wait()
          wait_result.release()
          return _result['result']
docs: Synchronization fetch, usually used in xmlrpc thread