使用Python重新启动Raspberry Pi Wifi

时间:2018-01-03 15:38:46

标签: python raspberry-pi wifi

我有一个Python脚本,可以自动检查互联网连接,并且如果互联网发生故障,应该重启wifi连接。

这是执行此操作的功能:

def RestartWifi():
  print 'Restarting Wifi.'
  os.system('sudo ifdown --force wlan0')
  time.sleep(6)
  os.system('sudo ifup wlan0')

我已经添加了sleep命令,以确保在重新启用连接之前有足够的时间来禁用。

然而,有没有办法加快速度,并在禁用后以某种方式启用无线网络?另外,如果第一个命令花费的时间超过6秒,会发生什么? 有没有办法等待命令返回'就像它完成时的功能一样?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

您可以这样做的一种方法是让syscall阻止它完成。这样你就不需要等到严格必要了。一种方法是确保调用块与

一致
subprocess.check_output()

命令。

答案 1 :(得分:0)

回答我自己的问题,I found out os.system()以进程返回代码响应。这确实表明,该函数仅在被调用的子流程完成后返回。

因此,我试图解决的问题似乎根本不是问题,我应该能够消除睡眠时间。

然而,确实有一个(非常)短暂的延迟,就像一个预防措施和“让事情解决”,可以这么说。在大多数情况下,这一秒不应该是一个问题。

def RestartWifi():
  os.system('sudo ifdown --force wlan0')
  time.sleep(1)
  os.system('sudo ifup wlan0')