Мне нужно прочитать CSV-файл со списком объектов, чтобы затем выполнить json .dump и отправить построчно с интервалом в 30 секунд. У меня есть такой, но он не работает, он отправляет строку, но он не первый и через 30 секунд по какой-то причине останавливается.
data = []
c = ('id', 'room_id', 'noted_date', 'temp', 'out_in')
with open('online.data.csv', 'r') as file:
leitor = csv.DictReader(file, fieldnames=c, delimiter=',')
next(leitor)
for each in leitor:
d = {}
#print (each)
for field in c:
d[field] = each[field]
#print(field)
data.append(d)
#print(data)
def signal_handler(sig, frame):
print ('You pressed Ctrl+C.\nProgram closed.')
sys.exit(0)
def main(argv):
signal.signal(signal.SIGINT, signal_handler)
num_msgs_send = len(data)
mqttc = mqtt.Client('Publisher')
mqttc.connect(broker, port)
msgs_sent = 0
mqttc.loop_start()
for i in range(num_msgs_send):
try:
payload = json.dumps(data[i])
print (payload)
print ('Sending msg: ' + payload)
mqttc.publish(topic, payload)
msgs_sent += 1
time.sleep(30)
except KeyboardInterrupt:
sys.exit()
mqttc.loop_stop()
print ('Messages sent: ' + str(msgs_sent))
if __name__ == '__main__':
main(sys.argv[1:])