django 的定时任务不执行异步操作么

2019-03-12 08:59:01 +08:00
 334862132
最近有个需求需要定时任务去执行,但是看现在执行的定时任务太多顺手就做了个异步把这个定时任务嵌在了别的定时任务后面,昨天刚上线,结果今天一看定时任务原任务执行了,我的发送邮件任务竟然没执行,求解答 ,代码没问题,我手动执行一次那定时任务立刻就收到邮件了
上代码

from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor() # 异步
异步嵌入这么写的
executor.submit(mail)
这个异步是没问题的,因为我以前异步全是这么写的,线上也正常运行,没有问题
2611 次点击
所在节点    Python
6 条回复
cs8814336
2019-03-12 09:48:34 +08:00
那可能就是要看你的这段代码有没运行到了. 我这边 django 定时任务使用 crontab 做的.. 异步任务可以用 celery
youngce
2019-03-12 10:12:37 +08:00
我也感觉是代码没有执行到这里?我的定时任务也是用 celery 做的,管理起来也还好
334862132
2019-03-12 11:18:28 +08:00
@cs8814336
django 的定時任务本身就是通过 django 系统写入 linux 里面 跟 linux 执行有关,跟 django 运行不允许无关的 我们没用 celery 要是自己做还要添加新模块 比较麻烦的
334862132
2019-03-12 11:18:43 +08:00
@youngce 我感觉也是代码没执行到这
xpresslink
2019-03-12 12:22:53 +08:00
楼主的说法不能让人理解啊。不知道你是不是用的 django-crontab ?哪个玩意儿是依赖于 Linux 操作系统的 crontab 的。
外部调用 django 下的程序脚本的时候要初始化 django 运行环境才能正常工作。
如果你要定时任务和异步任务两种操作,最好还是上 celery 比较可靠。
同时结合 django 的 signal 机制来实现一些有前后依赖关系的任务。
cs8814336
2019-03-12 14:42:46 +08:00
@334862132 你这句话的标点符号看的我有点蒙...我说的那个定时任务是, 通过 crontab 定时执行 py 脚本, 这个 py 脚本可以复用到 django 的 model(当然这样就是要初始化 django 运行环境了). 这样 crontab 就是 linux 系统自己的调度了.相关调度日志也是可以查看系统日志.

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

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

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

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

© 2021 V2EX