Есть программа на питоне, она долго в цикле обрабатывает один файл из множества строк. Работает она в один процесс, последовательно. И хочется иногда как-то с ней связаться и узнать как дела (сколько строк обработано, сколько она уже времени работает, какая скорость, что сейчас обрабатывает итд).
Клиентом будет либо сама эта программа (при вызове с особым ключом полезет куда-нибудь в особый файл запишет команду "дай мне статистику", прочитает ответ и распечатает), либо может даже вообще /bin/cat /tmp/myfile.sock (было бы круто). Хотелось бы двунаправленную коммуникацию, чтобы можно было в будущем и другие команды отправлять, но и однонаправленная интересна, если она проще.
Вот что-то подобное хочется (с точки зрения юзера) получить на выходе:
# терминал 1
$ ./myscript.py < very_long_file.txt
started....
# терминал 2 (та же машина, тот же юзер)
$ ./myscript.py --stats
processed 123 lines
Пока что мне уже иногда кажется, что встроить целый вебсервер - самое простое, но как-то это неправильно и требует целый отдельный тред для вебсервера....
Нельзя ли все это сделать без форков и тредов, просто в цикле проверять, и если кто-то хочет статистику каким-то способом (может быть через FIFO или файловый или TCP socket, или через HTTP запрос - смотря через что мы это можем) - то дать ему статистику и продолжить работу?