Я пытаюсь использовать директиву apache CustomLog для передачи строк журнала в скрипт python (который должен входить в бэкэнд django). Я использую следующую строку customlog на виртуальном хосте:
CustomLog "|/usr/bin/python -u /home/rolf/feedmemore/myproject/logger.py > /tmp/out.txt 2> /tmp/err.txt" combined
Это основной цикл в logger.py:
.
c = sys.stdin.read(1)
line = ""
while True:
if c:
line += c
if ord(c) == 4:
break
else:
sys.stderr.write("huh?\n")
if c == '\n':
print line
logline(line.rstrip('\n'))
line = ""
c = sys.stdin.read(1)
Сначала я полагал, что если я получу "" от apache с read (1), то программа должна завершиться. Однако apache продолжает выдавать «» независимо от активности сервера. /tmp/err.txt быстро заполняется словами "а?" Что с этим?
Как моя программа регистрации должна знать, когда ввод завершен и должен завершиться? Я пытался проверить 0x4 (EOT), но это не сработало.
Моя первая попытка была с использованием "readline ()", но это не удалось.
Любые другие предложения о том, как централизованно регистрировать запросы в django, также будут полезны.