← Dynamic Workers / dynamic-workers / examples
Dynamic Workflows Playground
Попробуйте playground для динамических workflows ↗, написать логику workflow на JavaScript, выполнить её из Dynamic Worker и логировать каждый шаг в реальном времени.
В этом примере показано, как запустить Cloudflare Workflows из Dynamic Worker чтобы получить полноценное устойчивое выполнение, включая повторы шагов, паузы, гибернацию и waitForEvent, для любого workflow, который нужно запускать по требованию.
Как это работает
Это состоит из двух частей:
- Worker Loader : Worker, который выполняет логику вашей платформы. Он получает запрос, загружает код workflow пользователя как Dynamic Worker и передаёт ему привязку Workflow, чтобы тот мог создавать и запускать workflow.
- Dynamic Worker : Здесь определяется workflow. Вы пишете логику workflow, указывая, какие шаги должны выполняться, как долго он находится в режиме ожидания и каких событий ждёт.
@cloudflare/dynamic-workflows ↗ связывает их. Когда Dynamic Worker создаёт workflow, библиотека помечает его информацией о том, какой Dynamic Worker его создал. Эта метка сохраняется движком Workflows, поэтому когда workflow нужно возобновить после паузы, сбоя или перезапуска сервера, движок знает, какой Dynamic Worker перезагрузить для продолжения выполнения.
Полное описание библиотеки и её настройки см. в Руководство по Dynamic Workflows.
Что включено в этот playground
- Настройка Worker Loader и Dynamic Worker : Полноценный рабочий пример Worker Loader, который загружает код workflow во время выполнения, и Dynamic Worker, который выполняет его с устойчивым выполнением, используя
@cloudflare/dynamic-workflows↗. - Потоковая передача логов в реальном времени : Каждый
console.log()иconsole.warn()от Dynamic Worker фиксируется и передается в браузер в реальном времени, поэтому вы видите, что происходит внутри каждого шага по мере его выполнения. - Сохранение исходного кода : Код workflow сохраняется, чтобы, если workflow приостанавливается (например, во время
step.sleep()) и сервер пересоздаёт процесс, он может заново загрузить тот же код и продолжить выполнение с того места, на котором остановился.