В современной разработке программного обеспечения создание надежных рабочих процессов, которые соединяют API из различных сервисов и обрабатывают как синхронные, так и асинхронные события, является распространенной проблемой. Традиционный подход предполагает использование сочетания очередей, микросервисов и систем управления состоянием для создания масштабируемых приложений. Несмотря на свою эффективность, эта архитектура сопряжена со значительными накладными расходами: настройка и обслуживание инфраструктуры, такой как очереди сообщений, запуск серверов или лямбда-функций, управление состоянием баз данных и реализация сложных механизмов обработки ошибок.
Что, если бы существовал более простой и надежный способ управлять длительными рабочими процессами без хлопот по управлению всей этой инфраструктурой? В этом цель Durable Python: чтобы попробовать его, зарегистрируйтесь в бета-версии.
Представьте, что вы хотите отслеживать запросы на включение (PR) в GitHub. Каждый раз, когда открывается новый PR, вы хотели бы создать специальный канал Slack для обсуждения и отправлять ежедневные напоминания до тех пор, пока PR не будет закрыт или объединен. Это звучит просто, поэтому вы можете подумать, что можете решить эту проблему с помощью базовой функции Python (вот базовая функция Python, созданная ChatGPT):
@app.route('/webhook', methods=['POST']) def github_webhook(): data = request.json if 'pull_request' in data and data['action'] == 'opened': pr_number = data['pull_request']['number'] pr_url = data['pull_request']['html_url'] # Create a new Slack channel for the PR channel_id = create_slack_channel(pr_number) send_slack_notification(channel_id, pr_number, pr_url) # Periodically check the PR status and send reminders until it's closed or merged while True: time.sleep(3600) # Wait for 1 hour before checking the status again pr_status = check_pr_status(pr_number) if pr_status == 'open': send_slack_notification(channel_id, pr_number, pr_url) else: break return jsonify({'status': 'ok'})
Кажется, этот фрагмент кода справляется с этой задачей, но он подходит только для сценария «счастливого потока». В реальных приложениях этот наивный подход терпит неудачу. Цикл while основан на непрерывной работоспособности сервера, которая не гарантируется. Процессы могут выйти из строя, серверы могут перезапуститься, и внезапно ваш рабочий процесс нарушится.
Более надежный подход предполагает создание приложения, управляемого событиями. Здесь вы можете использовать очереди для прослушивания событий GitHub, задания cron для отправки напоминаний, базы данных для хранения PR и состояния канала, а также функции для обработки этих событий. Обычно эта установка выполняется в облачной инфраструктуре, используя для развертывания и выполнения такие сервисы, как AWS Lambda.
Хотя этот метод осуществим и надежен, он также требует значительной настройки, обслуживания и опыта. Управление инфраструктурой, обеспечение бесперебойной работы и обработка ошибок требуют значительных ресурсов и квалифицированной команды.
Что, если бы вы могли объединить простоту простого кода Python с надежностью асинхронного дизайна? Что, если бы Python мог гарантировать, что даже в случае сбоя процесса или перезапуска сервера он продолжится с того места, на котором остановился?
AutoKitcheh решает именно эту проблему с помощью Durable Python. Используя Durable Python, пользователь пишет код Python, в то время как система гарантирует, что в случае перезапуска процесса он продолжит работу с той же точки. Хотя существуют ограничения (например, длительное время простоя может быть не идеальным), в большинстве случаев это решение работает отлично.
Durable-Python избавляет вас от необходимости управлять состоянием вручную, позволяя писать рабочий процесс как непрерывный поток, а не как управляемый событиями конечный автомат, сборка и отладка которого может оказаться сложной задачей. AutoKitteh, как инфраструктура, имеет встроенные очереди и интеграцию с внешними приложениями и API, что позволяет легко и быстро разрабатывать надежные рабочие процессы на Python.
Никакой магии — только надежная инженерия. AutoKitteh работает на базе Temporal, платформы для построения устойчивых рабочих процессов. Временное требует особого способа кодирования, включая понимание детерминизма, идемпотентности и других концепций для обеспечения надежности. AutoKitteh абстрагирует эти сложности, позволяя разработчикам писать стандартный код Python. Под капотом любая функция с побочными эффектами преобразуется во временную активность. Вам как разработчику не нужно беспокоиться об этих деталях — просто сосредоточьтесь на написании бизнес-логики.
Более подробную техническую информацию можно найти в документации AutoKitteh.
Конечно, у каждой абстракции есть цена. Под капотом Durable Python записывает ход рабочего процесса, чтобы обеспечить восстановление после сбоя, что влечет за собой некоторые затраты на хранение и производительность.
Durable Python предназначен для оркестровки API, а не для создания приложений для обработки данных. Если вам нужны высокопроизводительные приложения, вам следует рассмотреть возможность создания собственного решения. Однако, если вы хотите быстро разработать надежные рабочие процессы с минимальными инвестициями в разработку и инфраструктуру, Durable Python может стать хорошим вариантом.
Durable Python можно применять в широком спектре рабочих процессов, особенно в областях, где надежность имеет решающее значение, например:
Примеры рабочих процессов можно найти здесь.
Концепция Durable Python, реализованная на базе AutoKitteh, позволяет разработчикам создавать, развертывать и управлять надежной автоматизацией рабочих процессов с минимальным количеством кода. Надежное выполнение и плавное восстановление выполняются «за кулисами», поэтому вы можете сосредоточиться на том, что действительно важно — на вашей бизнес-логике.
Хотя существует множество отличных инструментов для достижения долговечности (например, Temporal и Restate), Durable-Python обеспечивает быстрый, простой и экономичный способ достижения тех же результатов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3