我制作了一个webapp(python/django),它ping不同的服务器并返回ping值。
这是Link
它有一个pingserver(ip,sev)函数,该函数使用os/system fping(可以与/bin/ping一起使用)获取输出,strips获取值。

def pingserver(ip,sev):
    ping_response = subprocess.Popen(["/usr/bin/fping","-c1","-t400",ip], stdout=subprocess.PIPE).stdout.read()
    latency = str(ping_response)
    ping_value=latency.split('ms')[0].split(',')[-1]
    if len(ping_value) <= 3:
        return(sev,'unknown')
    else:
        return(sev,ping_value)

它在我的本地服务器中运行良好,但是代码在托管机器中不起作用,因为'/bin /fp'不退出。
我不能这样做:
安装fping或ping(我对服务器没有根权限)
无法使用pyping(创建原始套接字需要根)
无法使用ping/fping可执行文件(需要根权限)
无法使用http.connnection.request或类似文件(我需要确切的ping值;不需要有关服务器启动或关闭的信息)
因此,我的问题是,在这种情况下,如何获得ping/延迟,从而使代码正常工作。
(如有任何有关代码重排或图书馆使用的建议,敬请谅解)

最佳答案

似乎ping有潜在的安全问题,所以pythonanywhere不允许您运行它。但是你可以

time nc -zw400 <host> <port>

(对time命令使用bash shell)获取延迟统计信息

关于python - 使用Python在未优先处理的主机上难以实现ping/延迟功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53474606/

10-16 03:36