Windows 7:在有网络流量时防止计算机进入睡眠状态

Windows 7:在有网络流量时防止计算机进入睡眠状态

我有一个 Python 脚本,用于在远程计算机上下载数据。我想在数据下载过程中防止计算机进入睡眠状态。但是,如果程序完成/挂起/崩溃,我希望计算机进入睡眠状态。

我不想禁用计算机上的休眠设置。我查看了 insomnia 和命令行快捷方式等程序(如何通过命令提示符/运行菜单让计算机进入睡眠状态?),但它们并不完美。我可以用任何方式在 Python 代码周围放置一个 try:except:finally 块并调用一些函数让计算机进入睡眠状态吗?

更新:觉得这个答案很有用:使用什么命令可以使您的计算机进入睡眠状态(而不是休眠状态)?。我创建了一个小型的单行sleep应用程序,可以finally使用 os.system 调用从我的 python 块中调用它。

答案1

避免此问题的一个可能方法是利用网络适配器电源管理选项。

  1. 在“开始”菜单搜索框中输入“设备管理器”并运行该应用程序。
  2. 找到并右键单击您的网络适配器
  3. 移至电源管理选项卡。
  4. 任何一个:
    1. 关闭“允许计算机关闭此设备以节省电源”,或者
    2. 关闭“仅允许魔包唤醒计算机”。

我可能会建议先使用 4.2,看看它是否适用于您的网络适配器。这将保持您的网络适配器的电源管理功能处于激活状态。4.1 将完全删除它们。

或者,你可以尝试保持魔术包打开并在 Python 内部使用它们来保持计算机保持唤醒状态:从这里开始:Windows 7 中的网络设备电源管理。你有兴趣看文章末尾的评论。

如果您将 Windows 7 网络适配器配置为“仅允许魔术包唤醒计算机”,则可以使用免费的 WolCmd.exe 命令行实用程序发送魔术包。由于此方法并非 100% 可靠,我创建了一个批处理文件,使用 4 个不同的入站 UDP 端口转发到 Thinkpad 的 LAN IP 地址,按如下方式发送命令 4 次。使用 4 个不同的端口是为了提高“唤醒”和交付的可靠性。发送命令 4 次肯定有助于提高可靠性。我不知道通过防火墙使用 4 个不同的 UDP 端口是否有任何不同。

Wolcmd 可用这里

相关内容