如何在Django中使用线程

0 投票
3 回答
2646 浏览
提问于 2025-04-15 21:17

我想检查用户的订阅日期,看看在某个时间段内哪些用户的订阅快到期了。然后给这些用户发邮件提醒,比如在到期前两天提醒他们。我觉得最好的办法是用线程和定时器来检查这些日期。但是我不知道该怎么调用这个功能。我不想单独写一个程序或者脚本,我想把这个过程结合到我的django代码里。我试着在settings.py文件里调用这个功能,但似乎这样做不太好。因为每次我导入settings的时候,它都会调用这个功能并创建一个线程。

3 个回答

2

如果你需要的不仅仅是这个异步任务,可以看看 celery

3

这是关于如何使用 manage.py 命令的情况,这个命令是通过定时任务(cron)定期调用的。你可以查看官方文档,了解如何创建这些命令。还有这篇文章,提供了一些额外的帮助。

如果你想要更简单的方法,可以看看django-command-extensions,它提供了一些命令来管理django 任务

1

使用 Django-cron 会简单很多,操作起来也更容易。

编辑:增加了一个小提示

from django_cron import cronScheduler, Job
class sendMail(Job):
       # period run every 300 seconds (5 minutes)
        run_every = 300

        def job(self):
                # This will be executed every 5 minutes
                datatuple = check_subscription_finishing()
                send_mass_mail(datatuple)
//and just register it             
cronScheduler.register(sendMail)

撰写回答