C#循环定时上传数据,失败重传解决方案,数据库标识

65 篇文章 7 订阅

有些时候我们需要定时的上传一些数据库的数据,在数据不完整的情况下可能上传失败,上传失败后我们需要定时在重新上传失败的数据,该怎么合理的制定解决方案呢?下面一起看一下:

当然本篇文章只是提供一个思路,如果有更好的方案欢迎留言一起探讨。

首先我们在数据库要有字段标识,默认为0。

在这里插入图片描述

我们在程序中使用定时器让它定时上传这些数据,如果成功则修改为1.

在这里插入图片描述

如果上传出现异常或失败那么把失败的数据标识为State+1,每次失败都增加1.

这里每当失败就会增加1,我们也可以在查询数据时选择失败多少次以后就不再上传。

在这里插入图片描述

我们在程序中查询时就可以这样写sql

select top 1 * fromwhere State!=1 and State<6 order by State asc
--这句sql的意思就是:因为State默认为0,上传成功会为1,失败会增加。我们只取未上传的和上传失败次数小于6次的,然后按照State升序排列,每次只取一条。这样就实现了循环上传,失败的检测再次上传。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Python的MQTT客户端库,例如paho-mqtt,来连接到OneNet的MQTT服务器,并实现设备数据上传。具体步骤如下: 1. 在OneNet平台上创建一个设备,并获得设备的设备ID和设备鉴权信息(即设备API Key)。 2. 安装paho-mqtt库,使用Python代码连接到OneNet的MQTT服务器,并订阅设备的数据上传主题。 3. 在代码中实现设备数据定时上传,可以使用Python的定时任务库,例如APScheduler。 4. 在设备数据上传时,使用MQTT客户端库发布数据到OneNet平台上的MQTT服务器对应的主题。 以下是一个简单的Python代码示例,实现设备数据上传到OneNet平台的功能: ```python import paho.mqtt.client as mqtt from apscheduler.schedulers.background import BackgroundScheduler # OneNet平台的MQTT服务器地址和端口号,以及设备ID和设备鉴权信息 host = "mqtt.heclouds.com" port = 6002 device_id = "YOUR_DEVICE_ID" auth_info = "YOUR_DEVICE_AUTH_INFO" # MQTT客户端连接回调函数 def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) # 订阅设备数据上传主题 client.subscribe("/devices/{}/data".format(device_id)) # MQTT客户端消息接收回调函数 def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) # 定时任务,每隔10秒上传一次设备数据 def upload_data(): client = mqtt.Client(client_id=device_id, clean_session=True) client.username_pw_set(username=device_id, password=auth_info) client.connect(host, port, 60) client.publish("/devices/{}/data".format(device_id), payload="YOUR_DATA", qos=0) # 启动定时任务 scheduler = BackgroundScheduler() scheduler.add_job(upload_data, 'interval', seconds=10) scheduler.start() # MQTT客户端连接 client = mqtt.Client(client_id=device_id, clean_session=True) client.username_pw_set(username=device_id, password=auth_info) client.on_connect = on_connect client.on_message = on_message client.connect(host, port, 60) # MQTT客户端循环 client.loop_forever() ``` 其中,YOUR_DEVICE_ID是设备ID,YOUR_DEVICE_AUTH_INFO是设备鉴权信息,YOUR_DATA是要上传的设备数据。这段代码会每隔10秒上传一次设备数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香煎三文鱼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值