【问题标题】:Restarting Raspberry Pi Wifi with Python用 Python 重启树莓派 Wifi
【发布时间】:2018-01-05 01:05:40
【问题描述】:

我有一个 Python 脚本,它会自动检查互联网连接,如果互联网出现故障,它应该会重新启动 wifi 连接。

这是执行此操作的函数:

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

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

但是,有没有一种方法可以加快速度,并在 wifi 被禁用后以某种方式启用它?另外,如果第一个命令花费的时间超过 6 秒,会发生什么? 有没有办法等待命令完成后像函数一样“返回”?

非常感谢您的帮助!

【问题讨论】:

    标签: python raspberry-pi wifi


    【解决方案1】:

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

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

    然而,有一个(非常)短暂的延迟确实是有意义的,只是作为一种预防措施和“让事情解决”,可以这么说。在大多数情况下,这一秒无论如何都不是问题。

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

    【讨论】:

      【解决方案2】:

      您可能会这样做的一种方法是让您的系统调用阻塞直到它完成。这样一来,您就不需要等待超过严格必要的时间。确保调用块的一种方法是使用

      subprocess.check_output()
      

      命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-05
        • 2022-11-14
        • 1970-01-01
        • 2016-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多