Lord Drous, класс CopyUtils из Apache Commons IO. Выяснение того, какие из зависимостей его используют - это долгий и нудный процесс, который никто за вас не сделает.
Adamos, я администрацию своего города заставил чинить дороги, делать водостоки, устанавливать пандусы и прочее. Закрыл магазин, который открыли посреди площади на месте планируемого фонтана. Заставил управляющую компанию поднять температуру батарей отопления. Ободрал как липку пару работодателей, которые пытались нарушить мои трудовые права. Придушил несколько магазинов нарушивших мои права потребителя. Закрыл три наркоточки. Прекратил автодискотеки стритрейсеров на ближайшей парковке. Утихомирил всех шумных соседей, включая и бандитов, и депутатов. И всё это время окружающие мне рассказывали, что это невозможно.
Adamos, в основе демократии лежит личный выбор, а не оглядки на других. Пассионарий делает так, как считает правильным, независимо от того поможет это или нет, а ведомый находит для себя оправдание, чтобы ничего не делать.
Максим Федоров, предположим, есть всего 3 провайдера. И каждый из них знает, что как только введёт какую-то непопулярную меру, его клиенты уйдут к другому. Даже если они все будут обязаны ввести эту меру, больше всех потеряет тот, кто сделает это первым, а получит больше всех тот, кто сделает последним. В таких условиях провайдеры будут бороться с законами наносящими им вред, оттягивать их выполнение и даже платить штрафы за невыполнение до тех пор, пока убыток от этого будет меньше, чем прибыль от сохранения клиентов. Но по факту провайдеров больше и резать VPN они не обязаны. Делают они это потому, что уверенны в безропотности своих клиентов.
vante_scribaxxi, то есть переложить выполнение долгой задачи на асинхронный сервис, типа Celery, а через Flask только выдавать этому сервису задачи и получать статус выполнения. Естественно, это исключает возможно ставить задачу на паузу, а точнее делает её бессмысленной.
Web-фреймворки, к которым Flask и относится, работают по протоколу http. Протокол http работает в режиме запрос-ответ без состояния. Проще говоря, реализовать продолжительный процесс с интерактивным интерфейсом в таких фреймворках невозможно или очень сложно. Копайте в сторону websocket'ов, но не ожидайте хоть сколько-нибудь приемлемой производительности. А ещё лучше измените логику работы приложения так, чтобы она соответствовала условиям работы в web.