0
"time"と "traffic light"パラメータを処理し、pickleファイルに保存し、別のスクリプトがpickleを読み込んで使用するWebサーバーを含むプロジェクトに取り組んでいますMQTTクライアント読み込みピクルファイルの応答が遅い、または応答がありません
import pickle
import paho.mqtt.client as mqtt
from datetime import datetime, date, time
from threading import Timer
date=datetime.now()
print date
try:
while True:
fp = open("shared.pkl", 'rb')
shared = pickle.load(fp)
if date < shared["now"] :
time= shared["time"]
light = shared["light"]
date = shared["now"]
fp.close()
time= int(time)
def pub (s):
client.publish("traffic/light1", payload = s ,qos=0, retain=False)
t= Timer(time , pub,[light])
t.start()
print time
print light
print date
client = mqtt.Client()
client.connect("localhost", 1883, 60)
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop(timeout=1.0, max_packets=1)
except (EOFError, UnpicklingError):
pass
それが良い動作しますが、時にはそれが公表していないか、PKLファイルを読み取れません!! 提案がありますか?
多分詳細は何ですか?あなたが何を見ているのか、あなたが何を観察しているのかを示してください。ありがとう。 – Dilettant
MQTTエラーがないと仮定すると、ループは 'client.loop()'コールで永遠にブロックされるので一度だけ実行されます。これは、ファイルを一度だけ開いて読み込むことを意味します。 – hardillb
'loop()'はブロックせず、 'loop_forever()'はブロックしません。 – ralight