我需要定期从PHP-FPM中提取状态信息。目前我只是解析以下脚本的输出:
export SCRIPT_NAME=/status
export SCRIPT_FILENAME=/status
export REQUEST_METHOD=GET
/usr/bin/cgi-fcgi -bind -connect /tmp/php5-fpm.sock
但是,如果可能的话,我希望我的Python程序能够自己实现cgi-fcgi
内容。
我已经尝试过搜索Python如何调用CGI / FastCGI;不幸的是,我发现的所有文档总是谈论如何通过CGI / FastCGI调用Python程序。也就是说,'服务器上的Python'侧。
那么,我该如何实现CGI / FastCGI'客户端'在Python?
(请注意,cgi-fcgi允许直接访问CGI / FastCGI监听器;这就是我正在寻找的东西)
答案 0 :(得分:0)
我已被选为this question的副本。
不过,我想记录我的解决方案:
fcgi_app
中经过修改的flup
模块(即 flup.client.fcgi_app )调用简单如下:
# "flup_fcgi_client.py" is the modified flup.client.fcgi_app module
# located in the same directory
import flup_fcgi_client as fcgi_client
fcgi = fcgi_client.FCGIApp(connect='/path/to/socket')
script = '/status'
query = 'json'
env = {
'SCRIPT_NAME': script,
'SCRIPT_FILENAME': script,
'QUERY_STRING': query,
'REQUEST_METHOD': 'GET'}
code, headers, out, err = fcgi(env)
# Handle return values here...