我在用 Django 写一个自动控制空调的网页后端,有一个需求是能让用户设置定时开启空调。问题在于,一般 Django 以及 Flask 等框架的运作逻辑都是用户请求->服务端响应
的模式,然而要实现定时功能必须在服务端有一个持续运行的检查时间的逻辑才行。
我现在采用的方法是服务端( Ubuntu )设置计划任务,然后单独写一个脚本检测数据库中存储的时间点,并且每分钟执行一次,如果检测到脚本执行时的时间是用户预定的开机时间则开启空调。
但是这种方案的扩展性并不好,那么 Django 框架中是否有办法实现在没有用户请求时也在服务端持续运行的逻辑呢?谢谢!
1
lniwn 2018-12-22 09:44:10 +08:00 via iPhone 1
我的解决方案是 flask 中写好接口,然后新建一个 trigger 项目,专门用来做定时触发任务,我觉得比写在 server 内部扩展性高多了。
|
2
BigBrother1024 2018-12-22 09:47:15 +08:00 via iPhone 1
celery
|
3
Aprilming 2018-12-22 10:02:05 +08:00 1
Channel, Django 有这个,里面有个"asgi.delay",延时任务功能,链接在这:https://channels.readthedocs.io/en/1.x/delay.html
|
4
panyanyany 2018-12-22 10:12:05 +08:00
最方便的不应该是写个 management 然后丢 crontab 吗?
|
5
youngce 2018-12-22 10:27:06 +08:00 1
celery,很好用的,楼主可以研究一下
|
6
chi1st 2018-12-22 15:00:36 +08:00 via Android 1
celery,APScheduler
|
7
dreambig183 2018-12-22 21:03:03 +08:00 via Android 1
celey 了解一下楼主
|