Я думаю, это плохая идея.
Лично я противник while True. Много людей со мной будут спорить, Лутц повсеместно использует такое, но я противник.
И пример того, почему это плохо делать, ты сам демонстрируешь. Ты хочешь, чтобы был main() и чтобы бесконечно работала func(). А когда func() должна перестать работать? Когда закончится main()? Тогда почему бы не сделать бесконечный цикл внутри main()? И почему он должен быть бесконечным?
Вот группа вопросов, которая ставит под сомнение подобный инженеринг.