Ну так у каждого сервиса своя конкретная реализация, геораспредение в любом случае добавляет задержки синхронизации и каком-то сервису вообще на это пофиг, а какому-то важно уложиться в определенную дельту. Так же и с деплоем, код могут не разом везде заливать, а раскатать только в одном регионе, посмотреть как повлияет на работу, после этого принять решение, откатить или дальше в другие регионы.
Michaelis, теоретически докер может помочь, только сам контейнер надо собирать там, где есть интернет, а переносить его на флешке или еще на чем, туда где нету. Только вот, я точно не скажу насколько после этого заработает, потому что такое не делал, не было требования что-то собрать, там где нет интернета.
когда именно происходит Memory Error? значения number на это влияет?
зачем сохранять в found_rows, когда можно сразу сделать print и не держать найденное в памяти
search_term.lower() тоже можно один раз сделать, а не на каждый поиск в ячейки