
一个小的店铺项目,需要实现自动下架的功能,比如,页面上设置了下架时间为 2022 年 6 月 1 日 10:00:00,然后在指定时间下架。
产品需求
所以想问问,django 有没有接口触发,创建任务,在指定的日期时间运行一次的模块。
1 wizardoz 2022 年 5 月 11 日 apscheduler |
2 justyoung 2022 年 5 月 11 日 试试 Celery |
3 lyang OP @wizardoz ``` sched.add_job(my_job, 'date', run_date=datetime(2009, 11, 6, 16, 30, 5), args=['text']) ``` 看到了,我再看看能不能跟接口结合 |
4 qsnow6 2022 年 5 月 11 日 |
5 lyang OP @justyoung 我先看看 apscheduler ,之前的自动确认收货就是用这个,apscheduler 可以指定 run_date ,或许可以实现需求 |
7 sujin190 2022 年 5 月 11 日 https://github.com/snower/forsun 推荐下之前做的服务,能够用商品 ID 做 key 创建定时任务,可以设置为到时间自动回调你设定的 url ,后端持久化可以用 redis ,估计能满足你的需求吧 |
9 westoy 2022 年 5 月 11 日 商品直接加有效期起始字段, 展示和用户下单的时候判断是否在有效期 要干一些关联性收尾的活儿用任务队列那是没办法, 就判断下是否在有效期没必要啊...... |
10 fds 2022 年 5 月 11 日 仅就这个需求来说,直接用下架时间判断还是最理想。用定时任务你得能接受分钟级别误差,而且还得记录执行状态避免各种没能执行的情况,没必要。 |
11 sciel 2022 年 5 月 11 日 |
14 a663 2022 年 5 月 11 日 查一下 django-q 或者 celery 你这个场景直接 django-q 就 ok |
15 krixaar 2022 年 5 月 11 日 直接写 view 里处理就是了,当后台 query 商品列表的时候还有前台访问商品的时候,如果当前时间大于下架时间而且上架状态不正确的直接改掉 save ,也就是没人看的时候不改数据库,有人看了才改一次,这样也不用担心定时任务万一没跑搞出状态 bug |
16 isSamle 2022 年 5 月 11 日 http://106.13.1.2/project-1/doc-210/ 或者用 sh 脚本定时触发 |
17 kidblg 2022 年 5 月 11 日 为啥不在商品 model 里加入下架时间呢? |
19 lyang OP |
20 paopjian 2022 年 5 月 11 日 数据库里加一条过期时间,一旦有人浏览这个物品了就触发检测显示下架?这样也不用定时了 |
21 Huelse 2022 年 5 月 11 日 crontab 就可以了 |
22 Rache1 2022 年 5 月 11 日 延时队列 |
23 Aprilming 2022 年 5 月 11 日 celery 延时就行了 |
24 himeson 2022 年 6 月 25 日 celery 是正解,在添加商品下架日期后,用 celery 设置一个 schedule 是每分钟执行一次的任务,搜索当前时间有没有需要下架操作的商品,有就执行下架。 |