| 1234567891011121314151617181920212223242526272829303132333435363738 |
- # @description:
- # @author: licanglong
- # @date: 2025/11/12 15:38
- import json
- import time
- import paho.mqtt.client as mqtt
- broker = "117.72.147.109"
- port = 18830
- client_id = "worker-01"
- client = mqtt.Client(client_id=client_id, callback_api_version=mqtt.CallbackAPIVersion.VERSION2)
- client.will_set(f"worker/status/{client_id}",
- payload=json.dumps({"status": "offline", "client_id": client_id}),
- retain=True)
- def on_message(client, userdata, msg):
- data = json.loads(msg.payload.decode())
- print(f"收到任务: {data}")
- # 模拟任务执行
- time.sleep(3)
- client.publish("task/ack", json.dumps({"task_id": data["task_id"], "worker": client_id, "result": "done"}))
- client.on_message = on_message
- client.connect(broker, port, 60)
- client.subscribe(f"task/{client_id}")
- client.loop_start()
- # 定时发送心跳
- while True:
- client.publish(f"worker/status/{client_id}",
- json.dumps({"status": "online", "client_id": client_id, "timestamp": int(time.time())}),
- retain=True)
- time.sleep(10)
|