ZerG
Если мы говорим о боте общего назначения то разумеется держать его на хостинге самый верный вариант для обеспечения отказоустойчивости
Там даже не в отказоустойчивости дело. Бот - это функция. Поэтому не должно в одной функции быть всё. Мы же не программисты на Basic'е. Опросник внутренней сети - это функция. Поэтом функция-бот запускает функцию-опросник.
Вот так оно выглядит
>>> def bot():
... result = pinger()
... if result:
... return 'ping ok'
... else:
... return 'ping fail'
...
>>> def pinger():
... host = '192.168.0.1'
... if ping_host(host):
... return True
... else:
... return False
...
>>> def ping_host(host):
... return True
...
>>> bot()
'ping ok'
>>>
Как видишь, bot() ничего не знает о том, как происходит опрос в pinger(). Это инкапсуляция. А pinger() ничего не знает о том, как именно опрашивается узел в ping_host(). Это инкапсуляция.
Ты же предлагаешь вот такое
>>> def bot():
... host = '192.168.0.1'
... result = True
... if result:
... return 'ping ok'
... else:
... return 'ping fail'
...
>>> bot()
'ping ok'
>>>
Но если адрес изменится, бот сразу сломается весь, потому что он привязан к этому адресу исходному.
А теперь представь, что после создания бота и его работы тебе говорят “к нам присоединились ещё две сети, нужно их опрашивать тоже”.
Я делаю что
def bot():
result = all((pinger1(), pinger2(), pinger3()))
if result:
return 'ping ok'
else:
return 'ping fail'
def pinger1():
host = '192.168.0.1'
if ping_host(host):
return True
else:
return False
def pinger2():
host = '192.168.0.2'
if ping_host(host):
return True
else:
return False
def pinger3():
host = '192.168.0.3'
if ping_host(host):
return True
else:
return False
А ты что делаешь? Монолит на сто строк? У меня бот меняется минимально. А потом на каждой сети своя шарманка заводится, хоть с одной подсетью, хоть с десятью. Бот просто спрашивает у каждой такой штуки “ты как? видишь что-нибудь?” и они ему отвечают “я вижу один узел!”, “я вижу десять узлов!”, “я вижу сто узлов!”. И бот тогда говорит “всё пропинговалось, хозяин”. При этом что там пинговалось и сколько, зависит от этих отдельных частей, которые бот просто опрашивает по-простому.