Python 如何从gunicorn';什么是叉钩?

Python 如何从gunicorn';什么是叉钩?,python,gunicorn,cherrypy,Python,Gunicorn,Cherrypy,我将CherryPy与gunicorn一起使用,我需要让我的应用程序实例在主线程pre-fork上运行它的init,并在post-fork上运行其他方法(假设我有一个很好的理由——就像我所做的那样)。我可以安装post_fork钩子,但我看不到如何到达我的应用程序实例来调用该方法 导入日志 绑定='0.0.0.0:80' 工人=3 预加载应用程序=真 logconfig='logging.conf' def post_分叉(服务器、工作程序): logging.info('服务器:%s工作者:%

我将CherryPy与gunicorn一起使用,我需要让我的应用程序实例在主线程pre-fork上运行它的init,并在post-fork上运行其他方法(假设我有一个很好的理由——就像我所做的那样)。我可以安装post_fork钩子,但我看不到如何到达我的应用程序实例来调用该方法

导入日志
绑定='0.0.0.0:80'
工人=3
预加载应用程序=真
logconfig='logging.conf'
def post_分叉(服务器、工作程序):
logging.info('服务器:%s工作者:%s',服务器,工作者)

#如何到达server.server.start中的#2 再玩一会儿,我找到了答案:

def post_fork(服务器、工作者):
worker.app.callable.root.start()

如果您解释并将此答案标记为解决方案,我会很有用……您是如何初始化类pre_fork的?@geher示例代码的最后一行使用
Server()
@webKnjaZ初始化类的,我不确定如何解释它,除了从worker到根类的路径。如果不检查worker、app和callable的内容,它就没有很好的文档记录,也不明显。一旦我为每一层的内容添加了大量调试,我就在那里找到了我的根实例。
$ gunicorn -c config.py server:application
2019-08-14 00:42:26,033:22541:MainThread:INFO: init
2019-08-14 00:42:26,033:22541:MainThread:INFO: Starting gunicorn 19.9.0
2019-08-14 00:42:26,033:22541:MainThread:INFO: Listening at: http://0.0.0.0:80 (22541)
2019-08-14 00:42:26,033:22541:MainThread:INFO: Using worker: sync
2019-08-14 00:42:26,038:22544:MainThread:INFO: Booting worker with pid: 22544
2019-08-14 00:42:26,040:22544:MainThread:INFO: server:<gunicorn.arbiter.Arbiter object at 0x108f8efd0> worker:<Worker 22544>
2019-08-14 00:42:26,131:22545:MainThread:INFO: Booting worker with pid: 22545
2019-08-14 00:42:26,133:22545:MainThread:INFO: server:<gunicorn.arbiter.Arbiter object at 0x108f8efd0> worker:<Worker 22545>
2019-08-14 00:42:26,156:22546:MainThread:INFO: Booting worker with pid: 22546
2019-08-14 00:42:26,157:22546:MainThread:INFO: server:<gunicorn.arbiter.Arbiter object at 0x108f8efd0> worker:<Worker 22546>