今天突然收到了一个点赞,还是很开心的。最近接到个任务,做一下更新订单的模块,因为交易的原因,经常order给出去之后,就无法追溯订单的状态了,不知道到底完成没有,现在统一对order进行跟踪并存入数据库。
任务队列celery:主要用来做定时任务,也可以用crontab,但是之前做下单系统的时候已经写好了相关的接口,所以就用celery好了。
Mac os 直接pip intall celery.网上有很多cerry配置安装教程,就不赘述了。redis 主要作为一个中间存放tasks和结果的缓存的地方。
celery 是一个消息列队,把task写好交给worker去执行,对于每一个task实例化一个app,配置文件,装饰器,加入任务队列。另外读文档的时候发现celery的定时任务的最大时间间隔是5分钟,启动的时候记得加上-B 这个参数。
至于Mongodb,特别好用到数据库,比我之前用的Mysql好用多了,还是Nosql比较好用,嘻嘻。并且gui比如robo 3t就很好的实现交互,把数据库布在服务器上,本机可以通过ssh连接访问数据库,很是方便。。。
至于最后的解决方案,还是弃用了celery的任务队列,一个原因是celery 的内存泄露无法解决,导致程序跑一段时间就崩掉了,另外说到定时任务呢,还是crontab 的原生支持很友好,很方便,写好脚本 完全不用配置。