Я изо всех сил пытаюсь понять "странное" поведение моего простого скрипта. В принципе, он работает должным образом, если time.sleep () установлен как 60 с, но как только я устанавливаю значение выше 90 (90 - это, по-видимому, предел в моем случае), l oop не работает должным образом. Я обнаружил это, когда пытался приостановить скрипт на 3 минуты.
Вот мой скрипт
from gpiozero import CPUTemperature
import time
import paho.mqtt.client as mqtt #import the client1
import psutil
broker_address="192.168.1.17"
client = mqtt.Client("P1") #create new instance
client.connect(broker_address) #connect to broker
#time.sleep(60)
while True:
cpu = CPUTemperature()
print(cpu.temperature)
#a=cpu.temperature
#print(psutil.cpu_percent())
#print(psutil.virtual_memory()[2])
#print(a)
client.publish("test/message",cpu.temperature)
#client.publish("test/ram", psutil.virtual_memory()[2])
#client.publish("test/cpu", psutil.cpu_percent())
time.sleep(91)
В этом случае с 91 с он просто печатает значение cpu.temperature каждые 91 с , тогда как при значении вроде 60s, помимо печати, он также публикует значение через mqtt каждый цикл.
Я что-то здесь не так делаю? Или для более длительного сна мне нужно сменить код? Я запускаю это на RaspberryPi.
Заранее спасибо
РЕДАКТИРОВАТЬ:
Я решил изменить скрипт, в частности, как mqtt обрабатывал время
вот новый скрипт
mqttc=mqtt.Client("P1")
#mqttc.on_connect = onConnect
#mqttc.on_disconnect = onDisconnect
mqttc.connect("192.168.1.17", port=1883, keepalive=60)
mqttc.loop_start()
while True:
cpu = CPUTemperature()
print(cpu.temperature)
mqttc.publish("test/message",cpu.temperature)
time.sleep(300)