code: def run_with_gunicorn(self, **options):
          
          import gunicorn.app.base
          from gunicorn.six import iteritems
          import multiprocessing
  
          class GourdeApplication(gunicorn.app.base.BaseApplication):
  
              def __init__(self, app, options=None):
                  self.options = options or {}
                  self.application = app
                  super(GourdeApplication, self).__init__()
  
              def load_config(self):
                  config = dict([(key, value) for key, value in iteritems(self.options)
                                 if key in self.cfg.settings and value is not None])
                  for key, value in iteritems(config):
                      self.cfg.set(key.lower(), value)
  
              def load(self):
                  return self.application
  
          options = {
              'bind': '%s:%s' % (self.host, self.port),
              'workers': self.threads or ((multiprocessing.cpu_count() * 2) + 1),
              'debug': self.debug,
              **options,
          }
          GourdeApplication(self.app, options).run()
docs: Run with gunicorn.