Django ORM в многопоточной задаче не сохраняет данные в модель
В моем приложении django я планирую потоковый процесс для запуска каждые n секунд потока, предназначенного для сохранения данных в таблице. В моем файле init я делаю:
class RepeatedTimer(object):
def __init__(self, interval, function, *args, **kwargs):
self._timer = None
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.is_running = False
self.start()
def _run(self):
self.is_running = False
self.start()
self.function(*self.args, **self.kwargs)
def start(self):
if not self.is_running:
self._timer = Timer(self.interval, self._run)
self._timer.start()
self.is_running = True
def stop(self):
self._timer.cancel()
self.is_running = False
Итак, из моего init я делаю:
...
rc = RepeatedTimer(300, save_calc)
...
ok, мой cll запускается как поток и в этом методе сохраняет некоторые данные в двух разных таблицах, но только первый вызов save() был в порядке, второй ничего не делает:
...
vr = VarsResults(key_res=Results.objects.get(res_key=p.res_key),
var_id=v_id,
var_val= v_original,
var_val_conv = v_conv,
var_hash=hash_vars.hexdigest())
vr.save()
time.sleep(0.5)
# if val trigger alarm save in
if v_alarm and v_alarm.alarms_val:
if eval(str(v_conv)+v_alarm.alarms_val):
av = VarsAlarm(n_occurence=2, var_id=ModbusVariable.objects.get(id=int(v_id)))
av.save()
time.sleep(0.5)
Почему после первого vr.save() ничего не происходит? Второй запрос не выполняется (запрос правильный, также если я вставляю print или logging код, ничего не происходит). Есть ли другие способы добиться этого в многопоточном режиме?
Заранее большое спасибо