4

У меня есть скрипт Python, который загружает данные на удаленном компьютере. Я хочу предотвратить переход компьютера в спящий режим, пока идет загрузка данных. Однако, если программа завершает работу / зависает / падает, я хочу, чтобы компьютер перешел в спящий режим.

Я не хочу отключать настройки гибернации на моем компьютере. Я смотрел вокруг на программы, такие как бессонница и ярлыки командной строки ( Как я могу перевести компьютер в спящий режим из меню командной строки / запуска? ) но они не идеально подходят для работы. В любом случае, я могу поставить попытку: кроме: наконец, блокировать мой код на Python и вызвать какую-то функцию, чтобы перевести компьютер в спящий режим?

Обновление : этот ответ был полезен: какую команду использовать, чтобы перевести компьютер в спящий режим (не в спящий режим)? , Я создал небольшое однострочное sleep приложение, которое я могу вызвать из своего блока python finally с помощью os.system call.

1 ответ1

2

Одним из возможных способов избежать этой проблемы является использование параметров управления питанием сетевого адаптера.

  1. Введите Диспетчер устройств в поле поиска в меню "Пуск" и запустите приложение.
  2. Найдите и щелкните правой кнопкой мыши свой сетевой адаптер
  3. Перейдите на вкладку "Управление питанием".
  4. Или:
    1. Отключите "Разрешить компьютеру выключать это устройство для экономии энергии", или
    2. Выключите «Разрешить только волшебный пакет, чтобы разбудить компьютер».

Я бы, вероятно, сначала предложил 4.2 и посмотрел, работает ли он с вашим сетевым адаптером. Это сохранит функции управления питанием активированными для вашего сетевого адаптера. 4.1 удалит их полностью.

Кроме того, вы можете попытаться сохранить магические пакеты и использовать их из Python, чтобы не дать компьютеру проснуться: Начните здесь: Управление питанием для сетевых устройств в Windows 7. Вы заинтересованы в комментариях в конце статьи.

Если вы настроили сетевой адаптер Windows 7 на «Разрешать только волшебные пакеты», чтобы «разбудить компьютер», вы можете отправлять волшебные пакеты, используя бесплатную утилиту командной строки WolCmd.exe. Поскольку этот метод не был надежным на 100%, я создал пакетный файл, который отправляет команду 4 раза следующим образом, используя 4 различных входящих порта UDP, перенаправленных на IP-адрес локальной сети Thinkpad. Использование 4 разных портов было попыткой улучшить пробуждение и надежность доставки. Отправка команды 4 раза однозначно помогла надёжности. Я не знаю, имело ли значение использование 4 разных портов UDP через брандмауэр.

Wolcmd доступен здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .