Остановите выполнение сценария, названного с execfile

«Возвращает открытое соединение?» Если это соединение является общим в пуле (и может быть в будущем), вам не нужна другая транзакция, совершающая вашу предыдущую работу. Я видел МНОГИЕ клиенты / решения случаев подключения драйвера пула соединений, которые соответствуют интерфейсам JDBC, и Connection.close() также можно использовать, чтобы просто вернуть соединение обратно в пул.

Кроме того, лучше try{}catch{} вашего rollback() (отредактируйте, просто прочитайте весь пост, но мне всегда нравится регистрировать исключение при откате)

14
задан JcMaco 22 November 2012 в 21:18
поделиться

3 ответа

main может обернуть execfile в try / except block: sys.exit вызывает исключение SystemExit, которое main может перехватить в предложении except , чтобы при желании продолжить его выполнение в обычном режиме. То есть в main.py :

try:
  execfile('whatever.py')
except SystemExit:
  print "sys.exit was called but I'm proceeding anyway (so there!-)."
print "so I'll print this, etc, etc"

и любой .py может использовать sys.exit (0) или что-то еще для завершения своего собственного только исполнение. Любое другое исключение будет работать так же хорошо, пока это согласовано между источником как execfile d и источником, выполняющим вызов execfile , но особенно подходит SystemExit подходит, поскольку его значение довольно ясно!

19
ответ дан 1 December 2019 в 12:13
поделиться
# script.py
def main():
    print "Script starting"
    a = False

    if a == False:
        # Sanity checks. Script should break here
        # <insert magic command>    
        return;
        # I'd prefer not to put an "else" here and have to indent the rest of the code
    print "this should not print"
    # lots of lines bellow

if __name__ ==  "__main__":
    main();

Я нахожу этот аспект Python ( __ name __ == «__ main __ » и т.д.) раздражающим.

4
ответ дан 1 December 2019 в 12:13
поделиться

Что не так с простой старой обработкой исключений?

scriptexit.py

class ScriptExit( Exception ): pass

main.py

from scriptexit import ScriptExit
print "Main Starting"
try:
    execfile( "script.py" )
except ScriptExit:
    pass
print "This should print"

script.py

from scriptexit import ScriptExit
print "Script starting"
a = False

if a == False:
    # Sanity checks. Script should break here
    raise ScriptExit( "A Good Reason" )

# I'd prefer not to put an "else" here and have to indent the rest of the code
print "this should not print"
# lots of lines below
1
ответ дан 1 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: