Мой вопрос в том, когда возникает ошибка (timeout, connection reset by peer и т.д.), как перезапустить из urllib2.initialization() вместо существующей основной программы и снова перезапустить из HEADER CODE?
jack 23 окт. 2009, в 06:28
Поделиться
Поделиться:
3 ответа
Лучший ответ
Простой способ с ограничениями на попытки
HEADER CODE attempts = 5 for attempt in xrange(attempts): urllib2.initialization() try: while True: urllib2.read(somebytes) urllib2.read(somebytes) urllib2.read(somebytes) . except Exception, e: print e else: break FOOTER CODE
Andrey Gubarev 23 окт. 2009, в 04:39
Поделиться
Вы можете обернуть свой код в цикле «while not done»:
#!/usr/bin/env python HEADER CODE done=False while not done: try: urllib2.initialization() while True: # I assume you have code to break out of this loop urllib2.read(somebytes) urllib2.read(somebytes) urllib2.read(somebytes) . except Exception, e: # Try to be more specific about the execeptions # you wish to catch here print e else: # This block is only executed if the try-block executes without # raising an exception done=True FOOTER CODE
unutbu 23 окт. 2009, в 01:21
Решение ошибки Запуск программы не возможен так как на компьютере отсутствует XINPUT1_4dll
Поделиться
Как просто поместить его в другой цикл?
HEADER CODE restart = True while restart == True: urllib2.initialization() try: while True: restart = False urllib2.read(somebytes) urllib2.read(somebytes) urllib2.read(somebytes) . except Exception, e: restart = True print e FOOTER CODE
Charles Ma 23 окт. 2009, в 02:02
Поделиться
Ещё вопросы
- 1 Проблемы при построении временных рядов против пользовательских логинов?
- 0 Как инициализировать переменные $ scope контроллера в angularJS
- 0 Как игнорировать файлы с заданным префиксом?
- 1 Простой линейный график с альтаиром
- 0 Используйте Intel OpenCL.dll вместе с установкой NVIDA CUDA
- 0 Удаление CSS-класса из HTML с помощью jQuery
- 0 Проверка формы Zend2 с помощью плагина проверки формы jQuery
- 0 MySQL конвертировать строку в дату с миллисекундами
- 1 Обмен короткими сообщениями от клиента к клиенту
- 1 Не удается открыть новое действие по методу onResponse of Volley
- 1 Программа NullPointerException LifeGame.java
- 0 перемещение приложения php на локальный сервер
- 0 mysql конвертирует строки в столбцы из одной таблицы динамически
- 1 Как установить значения пользовательского элемента управления из класса
- 1 Событие по щелчку в надстройке, созданной с помощью «yo office», вызывается для всех открытых документов
- 1 Работа с платформой Entity с несколькими базами данных
- 1 LightGBM — метрики классификации не могут обрабатывать смесь двоичных и непрерывных целей
- 0 MySQL не возвращает массив в angularJS
- 1 Поле фрагмента равно нулю после поворота устройства в Android
- 1 Перенос проекта для использования localDB
- 0 MySQL: добавление X минут к столбцу времени
- 1 Как заставить работать внутренние плагины eslint без префикса eslint-plugin- *
- 0 Тест на основе JSON — Распределение результатов SQL в многомерный массив
- 1 Как исправить несколько методов одного и того же объекта
- 0 Добавить повторяющийся фильтр AngularJS
- 1 Модуль веб-модуля RefrenceError не определен
- 0 Почему статическая переменная класса не может быть размещена в стеке?
- 0 Как передать пользовательский ввод в программу COBOL и сохранить его в таблице SQL?
- 0 Ошибка при попытке загрузить драйвер сеанса Codeigniter 3
- 0 Struture «Студент» C ++
- 1 Сравните 2 списка с .intersection ()
- 0 Можно ли манипулировать выводом html элемента управления на страницу?
- 0 Объявите переменную в базе данных MySQL «только для чтения»
- 0 Как поддерживать выбранные пользователем локали в приложении AngularJS
- 0 Строки исчезают на Datatables?
- 1 LINQ Странный вывод SQL
- 1 Подсчет исключений
- 0 AngularJS просмотры нарушены после перенаправления oauth
- 1 Должен ли Pandas DatetimeIndex.weekday возвращать индекс или пустой массив?
- 0 Использование локальной переменной функции в main
- 0 Увеличивайте скорость animate () с каждым кликом ()
- 1 удаление текста контура круговой диаграммы
- 0 Найти валюту / сумму в пределах $ 1,00
- 0 Mysql сервер ушел — во время mysqldump
- 0 дополнительные элементы данных в объединенной структуре
- 0 Как я могу решить временную сложность следующего кода SQL?
- 1 com.ibm.db2.jcc.am.SqlException: [jcc] [10120] [11936] [4.14.88] Недопустимая операция: Lob закрыт. ERRORCODE = -4470, SQLSTATE = null
- 1 как сопоставить скобки и внутренние буквы
- 1 Как определить, попадает ли данная дата в следующую неделю / месяц
- 0 Как получить левую регистрацию
Источник: overcoder.net
Как сбросить ошибку на стиральной машине Bosch maxx 5
Bablosoft
Всем доброго времени. Подскажите, как одним действием/условием задать перезапуск потока при возникновения любой ошибки в многопоточном режиме, если нет возможности перезапустить поток, то как сделать то же самое для перезапуска всего скрипта?
Видел тут тему похожую, там совет поменять кол-во выполнений на повтор, но это совсем не то, в скрипте нет кол-ва выполнений, работает пока не остановишь (так надо)), но потоки переодически вылетают из-за ошибок.
Ошибки возникают в разных местах, но не всегда
Действий много и каждое заворачивать в игнор ошибок не вариант, к тому же ошибки в одном и том же месте могут быть разные
Спасибо)
ответил Bigshow8 в отредактировано
Всем доброго времени. Подскажите, как одним действием/условием задать перезапуск потока при возникновения любой ошибки в многопоточном режиме, если нет возможности перезапустить поток, то как сделать то же самое для перезапуска всего скрипта?
Видел тут тему похожую, там совет поменять кол-во выполнений на повтор, но это совсем не то, в скрипте нет кол-ва выполнений, работает пока не остановишь (так надо)), но потоки переодически вылетают из-за ошибок.
Ошибки возникают в разных местах, но не всегда
Действий много и каждое заворачивать в игнор ошибок не вариант, к тому же ошибки в одном и том же месте могут быть разные
Спасибо)
Можете поместить все действия в функцию, а вызов функции поместить в игнорирование ошибок. При возникновении любой ошибки в функции поток не завершится
ответил Fox в отредактировано
написал в отредактировано
Может вам лучше подойдёт сделать так
Проверить существование, далее через if проверяем, и если элемента нет на странице, то делаем нужные действия в блоке else
ответил Bigshow8 в отредактировано
Перечитайте ещё раз моё сообщение. Вам нужно создать отдельную функцию (например «test»), перейти в функцию «Main», выбрать и вырезать все действия, а затем вставить их в созданную функцию «test». В «Main» вместо всех действий должен быть только вызов функции «test» обёрнутый в игнор ошибок
Ну т.е. идет кубик игнор ошибок, далее уже внутри него вызов функции (в которой свой набор действий), и вот после нужно какое-то еещ условие или действие ставить, или более ничего не нужно?
Это проще и быстрее проверить самостоятельно, чем задавать вопрос на форуме :). Создайте тестовый скрипт и проверьте
Источник: community.bablosoft.com
Перезапуск программы при ошибке
Перезапуск приложения в случае его аварийного завершения
Небольшое дополнение к статье про обработку критических ошибок. Обработать возникшую ошибку, сохранить в лог состояние регистров на момент падения, уведомить пользователя о произошедшем — это хорошо и правильно. Но в Windows есть еще один интересный механизм обработки критических ошибок. Речь идет об автоматическом перезапуске приложения в случае возникновения нештатной ситуации типа необрабатываемого исключения или безответного зависания.
Делается это при помощи штатной функции RegisterApplicationRestart, которая доступна для использования, начиная с Windows Vista. Первым параметром указывается юникодная строка, которая будет передана в качестве параметра при перезапуске, причем юникодной она должна быть независимо от кодировки самого приложения. Вторым параметром можно настроить ситуации, при которых перезапуск выполняться не будет. Например, можно оставить только возможность перезапуска при зависании, а всякие деления на ноль, запись в запрещенные участки памяти и т.п. обрабатывать уже известными нам способами. Через параметры командной строки можно уведомлять приложение, что оно было перезапущено после аварийного завершения, тем самым давая возможность как-то реагировать на произошедшее. Например:
Code (Assembler) : Убрать нумерациюВыделить код
- ; Параметры командной строки на каждый из случаев возможного падения
- szCmd1 du ‘/error:MarlesonOne’ , 0
- szCmd2 du ‘/error:MarlesonTwo’ , 0
- . . .
- . . .
- ; Первая часть Марлезонского балета
- invoke RegisterApplicationRestart , szCmd1 , 0
- . . .
- ; Какие-то действия с возможностью падения
- . . .
- ; Вторая часть Марлезонского балета
- invoke RegisterApplicationRestart , szCmd2 , 0
- . . .
- ; Еще немного действий с возможностью падения
- . . .
- ; Все самое страшное уже позади
- invoke UnregisterApplicationRestart
Здесь по мере выполнения каких-либо действий, которые потенциально могут привести к падению приложения, устанавливается тот или иной параметр командной строки, который будет передан приложению в случае аварийного перезапуска. При каждом вызове функции RegisterApplicationRestart предыдущее значение командной строки заменяется на новое. В конце критического участка, если перезапуск больше не требуется, вызывается функция отмены UnregisterApplicationRestart.
Важное замечание. Возможность перезапуска у приложения появляется только в том случае, если оно отработало уже не менее 60 секунд. Это сделано специально, чтобы не нагружать систему постоянными перезапусками кривого приложения, которое валится еще при старте.
Перезапуск приложения при зависании
В случае безответного зависания приложения и при выполнении условия 60 секунд, приложение не перезапускается автоматически, а просто в меню выбора возможных действий пользователя добавляется еще один пункт «Перезапустить программу».
Командная строка — не единственный способ передать программе информацию о перезапуске. С помощью вызова RegisterApplicationRecoveryCallback можно задать callback-функцию, которая получит управление перед тем, как приложение перезапустится. Одним из параметров при установке callback-функции является время, отводимое на восстановление, по умолчанию это 5 секунд, но не более 5 минут. Во время процесса восстановления приложение должно вызывать функцию ApplicationRecoveryInProgress в течение указанного интервала, чтобы сигнализировать системе, что программе еще требуется время. Когда все восстановительные операции выполнены, приложение должно вызвать функцию ApplicationRecoveryFinished, чтобы система зря не тратила время на ожидание.
Code (Assembler) : Убрать нумерациюВыделить код
В приложении пример программы с исходным текстом, которая имитирует различные необрабатываемые ошибки и зависание, но дает возможность автоматического перезапуска. Перед запуском она дополнительно выводит параметры командной строки.
Пример программы с исходным текстом (FASM)
Источник: www.manhunter.ru