News for hackers. Stuff that matters.

michielme

Show HN: FlowWatch – Decorator-first file watcher for Python workflows

https://github.com/MichielMe/flowwatch

Built this because I was tired of writing the same watchdog boilerplate for file processing pipelines. FlowWatch is just decorators — @on_created, @on_modified, @on_deleted — plus a CLI and optional dashboard.Main thing I needed was process_existing=True so it handles files already in the folder on startup, useful for recovery.Using it for media workflows but it's generic. Feedback welcome.

( Read More... | no comments | on HN )
Good point. Right now it relies on FastAPI's dependency injection — you can wrap the router with your own auth middleware or add dependencies when including it. But I should add an example to the docs. Thanks for the nudge.
Really appreciate you sharing this setup. The cron file generation for persistence is clever, and the whitelisting approach for user-defined jobs makes a lot of sense. Might borrow some of these ideas if I add a UI for job creation. Thanks!
Interesting idea. Right now jobs are code-only which keeps it simple, but a UI for defining basic jobs could work. I'll think about it.
Fair point. Cron works fine for standalone scripts. This is more for when you want scheduled tasks inside an existing Python app without spinning up separate infrastructure.
APScheduler is solid and more mature. Main difference is the API — FastScheduler is decorator-first so you get @scheduler.daily.at("09:00") instead of configuring triggers, executors, and job stores separately. Also has a built-in FastAPI dashboard.
Definitely open to PRs! Still early days so lots of room for improvement. Feel free to open an issue if you have ideas.
Thanks! Yeah that's exactly the use case — when you just need something scheduled without setting up a whole stack.

Show HN: FastScheduler – Decorator-first Python task scheduler, async support

https://github.com/MichielMe/fastscheduler

Hi! I've built this because I kept reaching for Celery for simple scheduled tasks and it felt like overkill. I just needed "run this function every hour" or "daily at 9am", not distributed workers.So it's decorators for scheduling (@scheduler.every(5).minutes, @scheduler.daily.at("09:00")), state saves to JSON so jobs survive restarts, and there's an optional FastAPI dashboard if you want to...

( Read More... | 14 comments | 2 points | on HN )