# -*- coding: utf-8 -*- import fcntl import json CONF_FILE = '/srv/vm/config.json' # Locking is needed in order to prevent race conditions in WSGI threads LOCK_FILE = '/srv/vm/config.lock' class Config: def __init__(self): self.load() def load(self): with open(LOCK_FILE, 'w') as l: fcntl.flock(l, fcntl.LOCK_EX) with open(CONF_FILE, 'r') as f: self.data = json.load(f) def save(self): with open(LOCK_FILE, 'w') as l: fcntl.flock(l, fcntl.LOCK_EX) with open(CONF_FILE, 'w') as f: json.dump(self.data, f, sort_keys=True, indent=4) def __getitem__(self, attr): return self.data[attr]