我有一个Django网站,其中一个页面有一个按钮(或链接),当点击时会启动一个比较长的任务。显然,我希望将此任务作为后台任务启动,并立即向用户返回结果。我想使用一种简单的方法来实现这一点,而不需要像Celery这样安装和学习整个新的消息架构。我不想使用Celery!我只想使用一个简单的方法,在接下来的半个小时左右设置并运行。难道在Django中没有一种简单的方法可以做到这一点,而不必添加(又一个)第三方包吗?
我有一个Django网站,其中一个页面有一个按钮(或链接),当点击时会启动一个比较长的任务。显然,我希望将此任务作为后台任务启动,并立即向用户返回结果。我想使用一种简单的方法来实现这一点,而不需要像Celery这样安装和学习整个新的消息架构。我不想使用Celery!我只想使用一个简单的方法,在接下来的半个小时左右设置并运行。难道在Django中没有一种简单的方法可以做到这一点,而不必添加(又一个)第三方包吗?
只需使用一个线程。
import threading
t = threading.Thread(target=long_process,
args=args,
kwargs=kwargs)
t.setDaemon(True)
t.start()
return HttpResponse()
查看此问题以获取更多详细信息: Django能够执行多线程任务吗?
你可以查看一下 django-background-tasks - 它恰好能够满足你的需求,且不需要像 RabbitMQ 或 Redis 等额外的服务运行。它在数据库中管理任务队列,并具有 Django 管理命令,可以运行一次或作为定期作业。