我目前正在使用supervisor轻松监视和守护一些python脚本。但是,主管似乎不会正确登录。 我正在执行的脚本就像这样简单:
Route::filter('userFilter', function () {
if (Route::input('name') == 'John') {
return 'Welcome John.';
}
});
Route::get('user/{name}', array(
'before' => 'userFilter',
function ($name) {
return 'Hello, you are not John.';
}));
这是相应的conf文件:
#!/usr/bin/env python
import pushybullet as pb
import sys, time, logging
# INIT LOGGING
logging.basicConfig(format='%(asctime)s @%(name)s [%(levelname)s]: %(message)s', level = logging.DEBUG)
if __name__ == '__main__':
try:
logging.info('Custom service started')
while True:
#here for the sake of example, actually doing real stuff here
time.sleep(2)
finally:
logging.info('Custom service stopped')
所以我根据google上的许多研究测试了很多东西。 通过print替换日志行,然后刷新stdout indeeds工作;与-u选项相同,用于启动脚本。但是打印不足以满足我的需求,Python的日志模块就是。所以我尝试在每个日志行之后刷新,并以无缓冲的mod启动脚本,但什么都没有出现!
提前感谢您的帮助!
答案 0 :(得分:1)
感谢佩德罗罗德里格斯,我发现了。对于像我这样苦苦挣扎的人,只要知道你只是创建一个这样的文件处理程序:
flex
并添加到您的程序配置文件:
fh = logging.FileHandler('/var/log/supervisor/your_program_name.log')
脚本将在日志中写入,然后由主管读取,在Web界面上可见。如果您尝试在没有主管的情况下尝试启动脚本,则可能会创建的一个问题是拒绝权限。