我现在是用一个 while 循环每隔一秒钟查询一次来判断的,有没有什么其他方法可以实现这个需求? 谢谢

我现在是用一个 while 循环每隔一秒钟查询一次来判断的,有没有什么其他方法可以实现这个需求? 谢谢
1 lishunan246 Aug 23, 2021 via Android canal |
2 mtrec Aug 23, 2021 不如说说你想干什么以及你现在的做法有什么让你不满的地方 |
3 qiyuey Aug 23, 2021 via Android 监听 binlog |
4 dorothyREN Aug 23, 2021 设置个更新操作的触发器,然后触发器里面判断有没有更新这个值。 |
5 Ackvincent OP @lishunan246 @mtrec @qiyuey @dorothyREN 我现在代码是这样 感觉很蠢得样子 ```python while True: print('start check') action = mysql.get_action() if action == 'turn_on': turn_on_the_light() elif action == ''turn_off': turn_off_the_light() else: time.sleep(1) continue ``` |
6 dangyuluo Aug 23, 2021 自己写个插件 MySQL UDF |
8 vaas Aug 23, 2021 via Android 看起来你这个值就不该放到数据库,也许你可以试试配置中心? |
9 ericls Aug 23, 2021 via iPhone Trigger |
10 imycc Aug 23, 2021 我们之前搞了个 trigger,当插入值的时候自动触发其他关联表的更新。 但是后面负载高的时候操作偶尔会丢失,找了 DBA 查了 binlog,貌似是出错了还是怎么的,反正排查特别麻烦。查错误的时间快够我重构接口了。 如果你有数据库的权限去监听变更,那一般来说 Model 层代码也是自己维护的,这种事情最好在业务逻辑里面做。 当更新字段值的时候,自己写逻辑,想直接改关联数据,还是用消息队列,都可以比较直观地执行,后期查日志也方便。 |
11 qiyuey Aug 23, 2021 via Android @Ackvincent 搜索配置中心 |
12 CEBBCAT Aug 23, 2021 via Android 看起来是 IoT 应用,为什么没有采用基于订阅 /回调之类的架构呢? MySQL 连接还是比较重的吧 |
13 ila Aug 23, 2021 via Android trigger+scheduler event |
14 darkengine Aug 23, 2021 @Ackvincent action 就不应该存到数据库里,放队列里更合适 |
15 bthulu Aug 23, 2021 订阅并解析 binlog 就行了 |
16 update Aug 23, 2021 1,数据库触发器 2,binlog 监听 3,业务代码层监听 |
17 inhzus Aug 23, 2021 via iPhone 觉得这种业务形式不太适合数据库,可以看看类似于阿里云 configserver 的产品 |
18 cheng6563 Aug 23, 2021 如果懒得改,就给这数据加个版本号然后继续凑合用即可。 |
19 mtrec Aug 23, 2021 @Ackvincent 除了感觉很蠢有没有别的问题 如果能满足现在的需求 没有必要增加别的依赖 |
20 PiersSoCool Aug 23, 2021 x s 轮询一次 |
21 fregie Aug 23, 2021 用 etcd |
22 Ackvincent OP 多谢楼上各位,看了各位的解决方案,我还是决定用自己比较蠢的方法,毕竟虽然蠢,但是没有什么坑要踩。 |
23 ch2 Aug 23, 2021 怎么方便怎么来 |
24 razertory Aug 23, 2021 订阅 binlog |
25 masterclock Aug 23, 2021 1. 又不是不能用 2. 带持久化的 mqtt,用 retained 的消息 |
27 C02TobNClov1Dz56 Aug 23, 2021 这种用配置中心很香啊, 比如 nacos |