CherryPy не слушает SIGHUP // демонизирует скрипт CherryPy - PullRequest
0 голосов
/ 24 апреля 2019

Я разработал бот Telegram с платформой CherryPy и пытаюсь развернуть его на экземпляре EC2.

Поскольку мой скрипт на python не является демоном, CherryPy, кажется, закрывает его, когдаполучает SIGHUP (мой терминал закрывается).Я не хочу, чтобы это произошло, и, похоже, есть способ изменить способ обработки этих сигналов CherryPy:

Из документов :

Вы можетеизмените сигналы, которые слушает ваше приложение, и то, что оно делает, когда оно получает сигналы, изменив: attr: SignalHandler.handlers, dict пар {signal name: callback}.Набор по умолчанию:

    handlers = {'SIGTERM': self.bus.exit,
                'SIGHUP': self.handle_SIGHUP,
                'SIGUSR1': self.bus.graceful}

Мой текущий скрипт имеет cherrypy.config.update() с соответствующим словарем конфигурации сервера и cherrypy.server.quickstart().Могу ли я сделать так, чтобы он не обрабатывал сигналы?

Или я должен просто развернуть свой скрипт как демон?Если так, как я могу сделать это родным для Ubuntu?

1 Ответ

1 голос
/ 24 июня 2019

CherryPy поставляется со встроенным демонайзером, сэндвичем между вызовами между вашим обновлением конфигурации и quickstart, например, так:

cherrypy.config.update(...)

cherrypy.process.plugins.Daemonizer(cherrypy.engine).subscribe()
cherrypy.process.plugins.SignalHandler(cherrypy.engine).subscribe()

cherrypy.quickstart(...)

Другой вариант, который вы могли бы рассмотреть, - это запуск вашего сервера за контроллером процесса.как супервизор (http://supervisord.org/)

...