2024-04-09 23:15:21 2024-04-09T21:15:21.795312Z ERROR windmill_queue::jobs: job 018ec4b7-2443-6ae2-4971-8a8854098925 did not succeed: {"error":{"message":"ExitCode: 1, last log lines:\n.0.3 in /usr/local/lib/python3.11/site-packages (from playwright==1.42.0) (3.0.3)\nRequirement already satisfied: pyee==11.0.1 in /usr/local/lib/python3.11/site-packages (from playwright==1.42.0) (11.0.1)\nRequirement already satisfied: typing-extensions in /usr/local/lib/python3.11/site-packages (from pyee==11.0.1->playwright==1.42.0) (4.11.0)\nWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\nerror: unknown command 'install\r'","name":"ExecutionErr"}}@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 · 5d ago
We're live here https://discord.com/channels/930051556043276338/1278977038430240813
henri-c · 3w ago
Infrastructure as code
rubenf · 2mo ago