当用户点击Django中的按钮时获取start_date?

时间:2013-01-03 10:59:36

标签: django

我试图在Django中获取start_date和end_date(处理完成后)。我有一个简单的表格。当用户单击Submit时,我想获取start_date并将该值插入数据库。处理完成后,我想获取end_date并将该值插入数据库。我已经在Django中设置了数据库。处理完成如下:

command = subprocess.Popen(['sshpass', '-p', password, 'rsync', '--recursive', source],
                           stdout=subprocess.PIPE)

如何知道命令执行何时完成并记录end_date?

2 个答案:

答案 0 :(得分:0)

您正在寻找Popen.poll()。当Popen仍在执行时,它将返回None。例如:

import subprocess
from datetime import datetime

d1 = datetime.now()
c = subprocess.Popen (["find", "/home/whatever", "-name","eclipse.ini"])

while c.poll() is None:
    pass

deltatime = datetime.now() - d1
print deltatime.total_seconds()

小心while循环。在Popen过程结束之前,您的程序将被卡在其中。也许你想发布一个线程来避免这种情况。

答案 1 :(得分:0)

如果你想以优雅的方式做到这一点,你应该尝试使用像celery这样的异步任务系统,并在CésarGarcía提出的任务中执行你的bash过程。

另一个选择是执行类似这样的事情:

subprocess.Popen(['sshpass ... && curl -X GET IP:PORT/some/internal/view/%d/' % task_id], shell=True)

完成时间可以插入django视图中的数据库。