调用linux ping时,Django应用程序被阻止

时间:2013-09-05 08:34:43

标签: python django ping

我需要验证主机是否可用,因此我使用os.system(“ping -c 1%s”%host)来检查它。如果主机可用,则代码运行良好,但是当主机不可用时,呼叫将不会永久返回。 这是我在view.py中的代码:

def go(request):
    code = request.GET.get('code')
    host = request.GET.get('host')
    if not verify_host(host):
        return HttpResponse("Host not available!")

def verify_host(host):
    cmd = "ping -c 1 -W 5 %s" % host
    if os.system(cmd):
        return False
    return True

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

使用

cmd = "ping -c 1 %s -W 2" % host

-W用于超时。

这不是一个python问题。命令块

编辑: 它工作正常。 试试这个 代码:

import os
host="10.13.1.23"
def verify_host(host):
    cmd = "ping -c 1 -W 5 %s" % host
    if os.system(cmd):
        return False
    return True

print verify_host(host)

输出:

$python file.py
PING 10.13.1.23 (10.13.1.23) 56(84) bytes of data.

--- 10.13.1.23 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

False