Прививка приложения WSGI на CherryPy через конфигурационный файл - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть приложение WSGI, встроенное (привитое) в мой сервер CherryPy.

from my_app import application
import cherrypy

if __name__ == '__main__':

    cherrypy.config.update("server.conf")
    cherrypy.tree.graft(application, "/good_stuff/")

    cherrypy.engine.start()
    cherrypy.engine.block()

Где server.conf - это статический файл конфигурации, который определяет свойства сервера и т. Д.

[global]                                                  
server.socket_host = "0.0.0.0"
server.socket_port = 8087
server.thread_pool = 30

Теперь я хотел бы запустить CherryPy в качестве службы демона, используя утилиту cherryd, поэтому я должен превратить прививающую часть в коде в статическую конфигурацию.

[global]
...
tree.graft = {my_app.application:"/good_stuff/"}

Я не могу найти рабочие примеры по этому вопросу, но это явно не так:

AttributeError: 'ReloaderApp' object has no attribute 'rstrip'

как я пытаюсь его запустить:

$ cherryd -c server.conf -i my_app

Идеи

1 Ответ

0 голосов
/ 25 апреля 2019

Решение:

    [global]
    ...
--- tree.graft = {my_app.application:"/good_stuff"}
+++ tree.graft = {"/good_stuff":my_app.application}

В любом случае, я угадал это из этого вопроса.Я не уверен, что есть какой-то момент в документах CherryPy, где я мог бы увидеть это.


Прочитав ответ Бернда Хауга здесь , я понял, чтоtree.graft(value) переводится как cherrypy._cpconfig._tree_config_handler("graft", value), являясь первым "прививкой" просто произвольной метки.Я мог бы позвонить по номеру tree.foo и все еще скрываться (если Берн Хауг прав), я на самом деле cherrypy.tree.graft - использую приложение WSGI.

...