Это функция «Мой обратный вызов»:
Код: Выделить всё
def on_message(self, client, userdata, msg):
timestamp_now = time.time()
print(timestamp_now)
print(self.counter)
self.counter = self.counter +1
1732657116.8512473
1
1732657116.8514547
1
1732657116.8516352
1
1732657116.8521552
1
1732657133.3355079
21732657133.3358626
2
1732657133.3359528
2
1732657137.4190025
1732657137.419096
3< /p>
1732657137.4203782
3
Как вы можете видеть, временные метки имеют разные значения миллисекунд, поэтому они разные, но счетчик не увеличивается для каждого сообщения, поэтому я думаю, что вместо этого функции можно называть параллельными. одного вызова одной и той же функции за другим.
Сначала я пытался сохранить полученные данные в свой банк данных, но мне хотелось сохранять их только каждые 60 секунд, поэтому я сравнил самую новую временную метку с последний раз сохранялся и когда эта разница была более 60, я пытался сохранить данные. Однако, когда 3 сообщения пришли быстро, между ними почти не было времени, и данные должны были быть сохранены, поскольку 60 секунд прошли, данные были сохранены три раза (все 3 SATA из 3 сообщений были сохранены).
Затем я сделал минимальный пример со счетчиком, чтобы проверить это, и обнаружил, что что-то работает не так, как ожидалось. На данный момент я понятия не имею.
Подробнее здесь: https://stackoverflow.com/questions/792 ... h-paho-pro