【发布时间】:2019-09-16 19:57:02
【问题描述】:
我有一个网页,当用户单击某个按钮时,我需要在其中运行一个长的 sql 进程(最多 20 分钟左右)。脚本运行,但用户无法继续浏览网站的其余部分。
我想拥有它,以便在单击按钮时,它会进入在后台运行的队列。
我查看了 django-background-tasks,但问题是在不运行 python manage.py process_tasks 的情况下似乎无法启动排队的任务。
听说过Celery,但是我用的是Windows系统,好像不太合适。
我是 django 和网站基础架构的新手,不确定这是否可行。我还在较早的回复中看到 threading 包可以做到这一点,但我不确定它是否已过时。
【问题讨论】:
-
我不明白运行 process_tasks 有什么问题。
-
要添加到上面的评论 - 对于最常见的后台作业框架,您需要启动一个单独的进程,该进程与您的常规网络服务器一起运行。您不需要每次想要运行任务时都调用
python manage.py process_tasks,您需要调用一次并让该进程与您的网络服务器进程一起运行。 -
我使用 Celery 并运行 Windows 10。完全可行。我也使用 Docker,这使得跨平台开发更容易。
标签: django