EE v1.303.4.REST scripts, one of them is a call to OpenAI's chat completion cached by Clouflare. I noticed that when testing this flow with the results already cached by Cloudflare, they return almost instantly, and the the flow executes very fast with the errors in the screen shot. I did not even set the error handler and the it shows up with the error message InternalErr: Sql error: error returned from database: deadlock detected. In the console I only see the same error as in the UI: Flow 018eb3b7-2601-ffbd-c7c0-72933c171ae7 cancelled as one of the parallel branch 018eb3b7-2655-648a-161f-c4cb1314d5e9 was unable to make the last transition5.
@everyone Windmill is the fastest workflow engine but many times the comparison with other workflow engines was stuck on low-code vs full code flows. I'm proud to release the ALPHA of: **Workflow-as-Code v2 — Write workflows as plain code** We completely rebuilt Workflow-as-Code from the ground up. Instead of a visual flow builder, you write your entire workflow as a regular TypeScript or Python script — with all the reliability of Windmill's execution engine behind it. ``` import { task, step, sleep, waitForApproval, workflow } from "windmill-client"; const process = task(async (x: string) => `processed: ${x}`); export const main = workflow(async (x: string) => { const a = await process(x); const urls = await step("get_urls", () => getResumeUrls()); await sleep(60); await waitForApproval({ timeout: 3600 }); return { processed: a }; }); ``` Each task() call runs as a separate checkpointed job — if your workflow fails halfway through, completed steps are skipped on retry. step() checkpoints inline code without spawning a child job. sleep() and waitForApproval() suspend server-side without holding a worker. What's new: - Direct function calls — no more string-based step references or passing context objects. Just wrap your functions with task() and call them normally - Module support — split your workflow across multiple files with taskScript("./helper.ts"), each module gets its own editor tab - Parallel execution — Promise.all() / asyncio.gather() just works - Full primitive set — task, taskScript, step, sleep, waitForApproval, getResumeUrls - Python & TypeScript — both languages supported with idiomatic APIs (@task() decorator in Python) - Live timeline — real-time visualization of step execution, durations, and status in the UI Available now in v1.652+. https://www.windmill.dev/docs/core_concepts/workflows_as_code
rubenf · 2d ago
We're live here https://discord.com/channels/930051556043276338/1278977038430240813
henri-c · 2w ago
Infrastructure as code
rubenf · 2mo ago