Python - 主管如何记录标准输出 -
Python - Supervisor how to log the standard output -
我不是 python 方面的专家,有人可以解释一下问题出在哪里吗?
我想通过主管收集标准输出
http://supervisord.org/
我制作了 3 个不同的脚本来打印输出,对于 bash 和 PHP 我可以收集输出,没有问题,python 不起作用。
php_test.sh
#!/usr/bin/php
<?php
for($i=0;$i<100000;$i++){
sleep(5);
echo 'test';
}
?>
bash_test.sh
#!/bin/bash
for i in `seq 1 100000`; do
sleep 5
echo item: $i
done
python_test.sh(使用不同的打印输出测试)
#!/usr/bin/python3
import time
import sys
from contextlib import redirect_stdout
for num in range(0,100000):
time.sleep(5)
print("test!")
sys.stdout.write("test")
with redirect_stdout(sys.stderr):
print("test")
我的主管配置文件
bash
[program:bash_test]
process_name=bash_test
command=/home/user/bash_test.sh
stdout_logfile=/home/user/bash_test_output.log
stdout_logfile_maxbytes=0
php
[program:php_test]
process_name=php_test
command=/home/user/php_test.sh
stdout_logfile=/home/user/php_test_output.log
stdout_logfile_maxbytes=0
python
[program:python_test]
process_name=python_test
command=/home/user/python_test.sh
stdout_logfile=/home/user/python_test_output.log
stdout_logfile_maxbytes=0
非常感谢您的帮助。
这让我发疯;[
Python 输出被缓冲,在 print
之后使用它
sys.stdout.flush()
或 (Python 3)
print(something, flush=True)
或更好
import logging
logging.warning('Watch out!')
您还可以使用 pip install supervisor-stdout
安装 stdout 友好版本。找到使用说明here.
更新:
您还可以更新 supervisord.conf
以将输出指向标准输出。
[program:worker2]
command=bash yourscript.sh
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
我不是 python 方面的专家,有人可以解释一下问题出在哪里吗?
我想通过主管收集标准输出 http://supervisord.org/
我制作了 3 个不同的脚本来打印输出,对于 bash 和 PHP 我可以收集输出,没有问题,python 不起作用。
php_test.sh
#!/usr/bin/php
<?php
for($i=0;$i<100000;$i++){
sleep(5);
echo 'test';
}
?>
bash_test.sh
#!/bin/bash
for i in `seq 1 100000`; do
sleep 5
echo item: $i
done
python_test.sh(使用不同的打印输出测试)
#!/usr/bin/python3
import time
import sys
from contextlib import redirect_stdout
for num in range(0,100000):
time.sleep(5)
print("test!")
sys.stdout.write("test")
with redirect_stdout(sys.stderr):
print("test")
我的主管配置文件
bash
[program:bash_test]
process_name=bash_test
command=/home/user/bash_test.sh
stdout_logfile=/home/user/bash_test_output.log
stdout_logfile_maxbytes=0
php
[program:php_test]
process_name=php_test
command=/home/user/php_test.sh
stdout_logfile=/home/user/php_test_output.log
stdout_logfile_maxbytes=0
python
[program:python_test]
process_name=python_test
command=/home/user/python_test.sh
stdout_logfile=/home/user/python_test_output.log
stdout_logfile_maxbytes=0
非常感谢您的帮助。 这让我发疯;[
Python 输出被缓冲,在 print
之后使用它sys.stdout.flush()
或 (Python 3)
print(something, flush=True)
或更好
import logging
logging.warning('Watch out!')
您还可以使用 pip install supervisor-stdout
安装 stdout 友好版本。找到使用说明here.
更新:
您还可以更新 supervisord.conf
以将输出指向标准输出。
[program:worker2]
command=bash yourscript.sh
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0