Django:在后台运行admin命令,完成后通知html

时间:2014-05-20 12:53:44

标签: python html django command

我在django中设置了一个管理命令:

from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
    """ Command to parse logs that can be called from django """
    def handle(self, *args, **options):
        parse_logs()

我可以使用call_command从shell或python中调用。当我从视图中调用它时,此命令会停止对应用程序的所有其他请求的工作,直到完成为止。

我希望能够在后台运行此命令,可能使用单独的Thread,并在网页上显示命令的结果,而无需重新加载页面。例如:

  1. 从网页调用命令
  2. 继续在网页上做其他事情
  3. 命令完成后,在网页上显示通知
  4. 永远不要重新加载网页

1 个答案:

答案 0 :(得分:3)

您可以使用子进程模块(Popen)作为单独的进程执行管理命令(从而使您的视图无需等到命令完成)。

该过程可以在完成时设置某种标志。然后,您将轮询服务器以获得结果,直到它们可用,即已设置标志

该过程还必须能够在结果可用后进行通信。