перезапуск скрипта python при ошибке

Как автоматически перезапустить скрипт Python, если он был убит или умер

Я запускаю свой сценарий Python в фоновом режиме на моем компьютере с Ubuntu (12.04) следующим образом:

Теперь может быть возможно, что на каком-то этапе мой выше Python script может умереть по любой причине.

Так что я думаю иметь какой-то cron agent скрипт в bash shell, который может автоматически перезапустить мой вышеописанный скрипт на Python, если он по какой-либо причине будет убит

Возможно ли это сделать? Если да, то как лучше всего решить эту проблему?

ОБНОВИТЬ:

Я запустил команду sudo, чтобы запустить ее, но я не вижу, как этот процесс выполняется с использованием ps ax?

Есть идеи, почему px axe мне ничего не показывает? И как я могу проверить, работает ли моя программа или нет?

В Ubuntu (до 14.04, 16.04 и позже используйте systemd) можно использовать upstart для этого лучше, чем задание cron. Вы вводите настройки конфигурации /etc/init и убедитесь, что вы задаете респаун

Это может быть минимальный файл /etc/init/testing.conf (отредактируйте как root ):

И вы можете проверить с /your/base/directory/testing.py :

и следите за тем, что происходит (в другом окне), с помощью:

Вы также можете добавить [start on][2] команду запуска при загрузке системы.

Вы также можете использовать более ориентированный на оболочку подход. Найдите свой cron сценарий и перезапустите его, если он умрет.

Добавьте эту строку в файл, который только что открылся

Сохраните файл и выйдите из редактора.

Вы можете заставить тестирующую программу перенаправить вывод, используя параметр командной строки, а затем использовать простой скрипт на python, чтобы перезапустить программу на неопределенный срок:

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

Вы не должны действительно использовать это для производства, но вы могли бы:

Но вы можете посмотреть на альтернативы init и в коде Python для Pardus: в частности, mudur daemon.

Если вы решите пойти с заданием cron (и обработкой файла PID), подумайте о том, чтобы прочитать этот PEP 3143 и, возможно, использовать его эталонную реализацию.

Как я упоминал в других моих комментариях, надежная обработка PID-файлов является сложной задачей. Это склонно к гонкам и угловым случаям. Это становится сложнее, если есть какой-либо шанс, что ваш файл PID окажется в NFS или другой сетевой файловой системе (некоторая атомарность гарантирует, что вы получите с семантикой обработки файлов в надлежащих локальных файловых системах UNIX / Linux, которые исчезнут в некоторых версиях и реализациях NFS, например). Также семантика вокруг блокировки файлов в UNIX может быть сложной. (Быстро ли снимается блокировка flock или fcntl блокировка в вашей целевой ОС, например, когда процесс, удерживающий ее, уничтожается с помощью SIGKILL?).

Вы также можете использовать мониторинг Monit Or Process с помощью ps-watcher.

Вот пример для вашего сценария:

Моим решением этого было изменить

это означает, что полная работа crontab будет такой:

В моем случае, как быстрое исправление, я хотел, чтобы моя программа работала, когда она выходила с ошибкой en или она была убита. С другой стороны, я хотел остановить выполнение, когда программа завершилась правильно (код возврата = 0)

Я проверил это на Bash. Он должен нормально работать в любой другой оболочке

Источник

Автоматически перезапускать скрипт

Как контролировать постоянно работающий скрипт, чтобы при вылетах его перезапускать? Как вариант, можно даже перезапускать скрипт просто по времени, например, каждые 3 часа

Добавлено через 14 секунд
Подойдет решение со сторонним софтом

Скрипт не выполняется автоматически в Windows XP
Скрипт распространяется на машины в домене посредством GPO, на машинах с winXP политика применяется.

Скрипт PHP закоментировался в HTML автоматически
Редактирую адаптивный шаблон HTML CSS При попытке внедрить код внутри 14

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

перезапуск скрипта python при ошибке. tick. перезапуск скрипта python при ошибке фото. перезапуск скрипта python при ошибке-tick. картинка перезапуск скрипта python при ошибке. картинка tick. Я запускаю свой сценарий Python в фоновом режиме на моем компьютере с Ubuntu (12.04) следующим образом:Нужен скрипт, который c правами админа в профилях пользователей автоматически собирает их email-ы
Здравствуйте. Нужен специальный скрипт. Работа скрипта должна проходить на форуме. Форум на движке.

Нужен ява-скрипт, который бы заставлял кнопку сабмит нажиматься автоматически через 3 сек.
Есть форма с кнопкой submit. Нужен ява-скрипт, который бы заставлял кнопку сабмит нажиматься.

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

Приходится перезапускать проводник
Всем привет. В общем проблема такая. После запуска компа он перестает реагировать на команды мышки.

перезапуск скрипта python при ошибке. tick. перезапуск скрипта python при ошибке фото. перезапуск скрипта python при ошибке-tick. картинка перезапуск скрипта python при ошибке. картинка tick. Я запускаю свой сценарий Python в фоновом режиме на моем компьютере с Ubuntu (12.04) следующим образом:Создайте скрипт, который бы автоматически выводил дату создания файла определенного формата. Для jpeg файлов, независимо
Создайте скрипт, который бы автоматически выводил дату создания файла определенного формата. Для.

Источник

В Python, как мне перезапустить функцию, если она выдает ошибку

Ниже приведены фрагменты моих кодов, которые я хотел бы знать гипотетически, если функция main2 () по какой-то причине выдает ошибку, как я могу получить свое исключение для повторного запуска той же функции, скажем, 3 раза, прежде чем она сломается?

Просто добавьте, что любая из функций может выдавать ошибку (не только main2 ()), также у меня может быть не только 3, но и много других функций.

4 ответа

Это будет работать так же, как если бы вы написали:

Если вы хотите сделать его надежным и чистым, вам следует выбрать первое решение. Первое решение, которое вы можете повторно использовать в крупном корпоративном проекте, и из-за времени отсрочки может потребоваться нагрузка на диск, пользовательские проблемы с загрузкой сети учитывают время отката / задержки.

Если вы не используете задержку, вы сделаете все 3 попытки всего за секунду. Это хорошо для некоторых исключений, но когда возникают проблемы с сетью или диском, вам нужно более сложное решение.

Кроме того, учтите, что не нужно перехватывать все исключения, это плохая практика для кэширования всех. Подробнее о том, почему это плохо

Вы должны обрабатывать все ошибки в определенных функциях, иначе, если обрабатывать ошибки всех функций вместе, функция, предшествующая другим функциям, выдаст ошибку, и элемент управления выполнит блок исключений, пропуская оставшуюся часть кода ниже в блоке try. Попробуй сам:

Попробуйте комментировать поднятые ошибки в функциях в другом порядке. И когда ошибки обрабатываются внутри каждой функции, то каждая функция выполняется без пропуска оставшихся функций в цикле.

Этот код будет запускать функцию main2() до тех пор, пока не получит 3 ошибки, а в первые 2 он снова запустит цикл.

Вот идиома, которую вы можете попробовать:

Источник

Как сделать программу Python автоматически перезапустить себя

Как сделать так, чтобы программа на python автоматически перезапускала себя? Итак, скажем, есть действительно простая программа, такая как:

Теперь в оболочке Python вам нужно будет нажать либо кнопку «Выполнить», а затем «Запуск модуля (F5)», либо просто кнопку «f5» на клавиатуре. Это первый раз, когда вы запускаете его. Когда программа закончилась, вы вернетесь к своему файлу «Cheese.py» и затем нажмите «f5», чтобы снова запустить программу. Все со мной здесь? Итак, мой вопрос: как заставить программу автоматически перезагружаться без необходимости делать это вручную?

4 ответа

Если вы хотите фактически перезапустить сценарий, вы можете выполнить сценарий снова, заменив текущий процесс новым, выполнив следующие действия:

Это будет постоянно перезапускать скрипт, предоставляя аргументы командной строки от текущей версии к новой версии. Более подробное обсуждение этого метода можно найти в посте «Перезапуск скрипта Python внутри себя »от Петр Земек.

эта статья отмечает один элемент является:

Или вы можете попробовать

Затем вы можете запустить скрипт через

В такой ситуации, чтобы перезапустить скрипт, используйте следующий код:

В противном случае, когда вы запускаете скрипт через

Используйте этот код:

В любом случае, не забудьте импортировать sys module

Я использую терминал на своем Mac, чтобы перезапустить некоторые из моих скриптов на Python с помощью функции ниже.

Примечание: не забывайте пробел после «профиля»; или функция может молча сбоить!

Затем в нижней части моего сценария нужно перезапустить:

Исходный вопрос о сценарии с сыром:

Источник

Перезапускать скрипт python после ошибки arcpy до успешного завершения

Я использую модуль arcpy в ArcGIS в Python (2.7) для обработки многих шейп-файлов полигонов, используя множество различных инструментов. Время от времени он генерирует случайную ошибку, которую я ловлю за исключением, но на все последующие шейп-файлы влияет та же ошибка. Я действительно не понимаю, что является причиной этой ошибки (ОШИБКА 010088), и единственный обходной путь, который я имею, состоит в том, чтобы перезапустить сценарий из последнего файла, который был успешно обработан.

У меня вопрос: как я могу перезапускать скрипт каждый раз, когда сталкиваюсь с этой ошибкой, а затем останавливаться, когда все файлы были успешно обработаны?

Скрипт называется test.py:

Скрипт называется forever.py, в том же каталоге:

Я на Windows-машине, поэтому я запускаю все это в командной строке с помощью:

Как и ожидалось, первый раз этот скрипт запускается без ошибок, а после этого он обнаруживает ошибку, поскольку выходной файл уже существует (ОШИБКА 000725). Проблема в том, что в конечном итоге я хочу, чтобы скрипт только перезапускался, когда он сталкивался с ошибкой 010088, и определенно не после успешного завершения скрипта. Таким образом, в этом примере он вообще не должен перезапускаться, потому что сценарий должен быть успешным при первом запуске. Я заранее знаю, сколько файлов нужно обработать, поэтому я знаю, что сценарий успешно завершился, когда достиг последнего.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *