我在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,并在网页上显示命令的结果,而无需重新加载页面。例如:
答案 0 :(得分:3)
您可以使用子进程模块(Popen)作为单独的进程执行管理命令(从而使您的视图无需等到命令完成)。
该过程可以在完成时设置某种标志。然后,您将轮询服务器以获得结果,直到它们可用,即已设置标志
该过程还必须能够在结果可用后进行通信。