Я использую RRDTool (http://oss.oetiker.ch/rrdtool/) в качестве графического бэкенда для хранения метрик производительности. Это делается с помощью RRDTool CLI из скрипта Python.
Моя проблема в том, что скрипт многопоточный, и каждый поток обновляет RRD довольно быстрыми темпами. Иногда происходит сбой обновления, поскольку один поток обращается к файлу RRD, а другой пытается получить к нему доступ.
У меня сложилось впечатление, что это нормально, поскольку RRDTool использует собственный механизм блокировки, но я полагаю, что это не так.
У кого-нибудь есть хороший подход для одновременного доступа к RRD?
Я могу придумать несколько путей:
имеет 1 поток, создающий очередь, и передает RRD только из одного потока.
создать свой собственный механизм блокировки внутри скрипта Python. (как бы я это сделал?)
есть что-то лучше или вы уже сталкивались с этой проблемой раньше?