Ситуация «работает вечно» иногда является частью большого конечного автомата. Многие встроенные устройства (с циклами run-forever) на самом деле не работают forever . Они часто имеют несколько режимов работы и будут последовательно переключаться между этими режимами.
Когда мы создавали контроллеры тепловых насосов, в течение некоторого времени работал режим самотестирования при включении питания (POST). Затем был предварительный режим сбора окружающей среды, который работал, пока мы не выяснили все зоны и термостаты и что-нет.
Некоторые инженеры утверждали, что следующим был цикл «беги навсегда». Это было не так просто. На самом деле было несколько режимов работы, которые переключались и колебались. Было отопление, разморозка, охлаждение, холостой ход и прочее.
Я предпочитаю трактовать цикл "навсегда" как действительно один рабочий режим - в будущем могут появиться другие.
someMode= True
while someMode:
try:
... do stuff ...
except SomeException, e:
log.exception( e )
# will keep running
except OtherException, e:
log.info( "stopping now" )
someMode= False
При некоторых обстоятельствах ничто из того, что мы видели до сих пор, не устанавливает someMode
в False
. Но мне нравится делать вид, что в какой-то будущей версии произойдет смена режима.