Я пытаюсь использовать unix именованный канал для вывода статистики работающей службы.Я намереваюсь предоставить интерфейс, подобный /proc
, где можно увидеть живую статистику, перебирая файл.
Я использую код, подобный этому, в моем коде Python:
while True:
f = open('/tmp/readstatshere', 'w')
f.write('some interesting stats\n')
f.close()
/tmp/readstatshere
- это именованный канал, созданный mknod
.
Затем я вижу его, чтобы посмотреть статистику:
$ cat /tmp/readstatshere
some interesting stats
В большинстве случаев он работает нормально.Тем не менее, если я выполняю запись несколько раз подряд, иногда я получаю несколько строк some interesting stats
вместо одной.Один или два раза он даже бесконечно печатал эту строку, пока я не убил ее.Единственное исправление, которое у меня есть, это установка задержки, скажем, 500 мс после f.close()
, чтобы предотвратить эту проблему.
Я хотел бы знать, почему именно это происходит, и если есть лучшееспособ справиться с этим.
Заранее спасибо