延迟任务的增加和删除

2019-06-18 23:10:01 +08:00
 chaleaochexist
两个 rest api
1. 增加一个延迟任务
2. 删除某延迟任务

延迟的时间很大,可能 2 周.2 个月都有可能.

这样的需求用啥做比较好?

apscheduler 的问题是 起多个进程处理起来比较麻烦.
celery 可以处理类似问题吗?


谢谢了
2251 次点击
所在节点    Python
8 条回复
chaleaochexist
2019-06-18 23:10:40 +08:00
任务是一次性的,不是定时任务.
chaleaochexist
2019-06-18 23:51:34 +08:00
距离成功只差最后一步.

django 中如何使用 apscheduler?
只启动一次,可以在多个 view 中使用.
并且在启动的时候,可以使用 django.cache.lock
Vegetable
2019-06-19 00:10:37 +08:00
感觉方向不是很恰当,celery 可以实现,直接使用 task.delay 或者 send_task 配合 countdown 参数就可以直接延迟执行,刚好也是执行一次.
但是 2 周好久啊,内存已经不靠谱了,celery+redis 勉强可以算作是可靠的吧

如果我来做我选择数据库+crontab
leishi1313
2019-06-19 05:01:43 +08:00
赞同#3,延迟那么久用什么异步没意义了,还是持久化到数据库然后跑定时任务比较好
chaleaochexist
2019-06-19 08:49:28 +08:00
@Vegetable
@leishi1313
任务丢出去,如何取消?

这不是定时任务,是一次性延时任务.并且可以被取消.你的意思是说,定时任务跑起来,然后删掉?
tt67wq
2019-06-19 08:53:05 +08:00
老老实实丢在数据库里面,再加个定时任务来消费,数据库的事务性能免去一大堆用其他乱七八糟 queue 带来的麻烦
leishi1313
2019-06-19 09:34:55 +08:00
@chaleaochexist 任务开始跑了不用再取消吧,没跑不就还在数据库嘛,删掉或者标记一下就好了呀。我们说的定时任务是一种服务,你可以设定每隔多久跑一次,然后你就可以设置比如每分钟数据库查一下有没有到期的任务,有就扔给 worker 跑就好了。celery 也有类似功能,搜“ celery cron ”
sujin190
2019-06-25 23:59:32 +08:00
https://github.com/snower/forsun

使用 redis 保存的话,开 redis 持久化就不会丢失,添加删除都很方便

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

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

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

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

© 2021 V2EX