django 定时触发任务

2022-05-11 09:52:43 +08:00
 lyang

一个小的店铺项目,需要实现自动下架的功能,比如,页面上设置了下架时间为 2022 年 6 月 1 日 10:00:00,然后在指定时间下架。

产品需求

所以想问问,django 有没有接口触发,创建任务,在指定的日期时间运行一次的模块。

3367 次点击
所在节点    Django
25 条回复
wizardoz
2022-05-11 09:58:10 +08:00
apscheduler
justyoung
2022-05-11 10:02:43 +08:00
试试 Celery
lyang
2022-05-11 10:05:10 +08:00
@wizardoz
```
sched.add_job(my_job, 'date', run_date=datetime(2009, 11, 6, 16, 30, 5), args=['text'])
```
看到了,我再看看能不能跟接口结合
qsnow6
2022-05-11 10:06:02 +08:00
lyang
2022-05-11 10:06:17 +08:00
@justyoung
我先看看 apscheduler ,之前的自动确认收货就是用这个,apscheduler 可以指定 run_date ,或许可以实现需求
lyang
2022-05-11 10:09:25 +08:00
@qsnow6
暂时没看到有指定时间的
sujin190
2022-05-11 10:13:37 +08:00
https://github.com/snower/forsun

推荐下之前做的服务,能够用商品 ID 做 key 创建定时任务,可以设置为到时间自动回调你设定的 url ,后端持久化可以用 redis ,估计能满足你的需求吧
lyang
2022-05-11 10:17:28 +08:00
@sujin190 多谢,star 了,需求能满足,我这个小项目,apscheduler 能满足我还是先用 apscheduler 了
westoy
2022-05-11 10:17:49 +08:00
商品直接加有效期起始字段, 展示和用户下单的时候判断是否在有效期

要干一些关联性收尾的活儿用任务队列那是没办法, 就判断下是否在有效期没必要啊......
fds
2022-05-11 10:21:31 +08:00
仅就这个需求来说,直接用下架时间判断还是最理想。用定时任务你得能接受分钟级别误差,而且还得记录执行状态避免各种没能执行的情况,没必要。
sciel
2022-05-11 10:24:38 +08:00
lyang
2022-05-11 10:26:28 +08:00
@westoy
@fds
我也是这样想的,产品需求 pass 了
lyang
2022-05-11 10:27:13 +08:00
@sciel go 不会啊,python 也有,只是我之前没找到,没碰到这类需求。/苦笑
a663
2022-05-11 11:01:51 +08:00
查一下 django-q 或者 celery 你这个场景直接 django-q 就 ok
krixaar
2022-05-11 11:05:30 +08:00
直接写 view 里处理就是了,当后台 query 商品列表的时候还有前台访问商品的时候,如果当前时间大于下架时间而且上架状态不正确的直接改掉 save ,也就是没人看的时候不改数据库,有人看了才改一次,这样也不用担心定时任务万一没跑搞出状态 bug
isSamle
2022-05-11 11:09:59 +08:00
http://106.13.1.2/project-1/doc-210/
或者用 sh 脚本定时触发
kidblg
2022-05-11 11:16:19 +08:00
为啥不在商品 model 里加入下架时间呢?
lyy16384
2022-05-11 11:17:09 +08:00
@lyang #12 你们的产品这么强势的吗,连开发方案也要他定
lyang
2022-05-11 11:24:51 +08:00
@a663 先用 apscheduler 这个了

@krixaar 这也是一种方法,但是多个接口里有用到,如果 model 支持在被查询的时候触发信号,应该可以

@isSamle 我这需要指定 datetime ,不是定期,所以一开始没找到。

@kidblg 加了,但是不让用这个方法。。。

@lyy16384 额,几年的工作让我习惯了,我说了几遍,不让用,那就算了,到这找找解决方案,还好有现成的
paopjian
2022-05-11 12:33:12 +08:00
数据库里加一条过期时间,一旦有人浏览这个物品了就触发检测显示下架?这样也不用定时了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX