mirror of
https://github.com/hatchet-dev/hatchet.git
synced 2026-01-01 06:11:02 -06:00
* fix: version * feat: first pass at new base rest client * fix: typing * fix: base client cleanup * feat: basic runs client * fix: finally!! * feat: helper functions for uuid and metadata conversion and api format fix * fix: patches * feat: run list apis * feat: add bulk replay and cancel * feat: replays and cancels * feat: result getter * feat: cron client * feat: scheduled workflows * feat: rate limit * refactor: don't export admin client anymore * feat: add a bunch more clients and remove the old `rest` thing * fix: scheduled workflow trigger time * fix: emptymodel default * refactor: stop passing pooled workflow run listener around everywhere * fix: more cleanup of context * refactor: remove unused stuff from runner * unwind: keep passing listeners around * fix: rm some unused stuff * fix: example * feat: metrics api * feat: a couple tests * feat: more default emptymodels * fix: tests * [Docs]: Misc. Python Migration Guide Issues, Rate limits, V1 new features (#1417) * fix: misc python migration guide * feat: rate limits docs * fix: lint * fix: lint * feat: skeleton * feat: add a bunch of docs * feat: bulk replay and cancel docs * fix: add task output to example * fix: otel docs + naming * fix: lint * fix: rm timeout * feat: initial python sdk guide * fix: raise on dupe on failure or on success * fix: dags docs * feat: 1.0.1
50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
from datetime import datetime, timedelta
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from hatchet_sdk import Context, Hatchet
|
|
|
|
hatchet = Hatchet(debug=True)
|
|
|
|
|
|
class PrinterInput(BaseModel):
|
|
message: str
|
|
|
|
|
|
print_schedule_wf = hatchet.workflow(
|
|
name="PrintScheduleWorkflow",
|
|
input_validator=PrinterInput,
|
|
)
|
|
print_printer_wf = hatchet.workflow(
|
|
name="PrintPrinterWorkflow", input_validator=PrinterInput
|
|
)
|
|
|
|
|
|
@print_schedule_wf.task()
|
|
def schedule(input: PrinterInput, ctx: Context) -> None:
|
|
now = datetime.now()
|
|
print(f"the time is \t {now.strftime('%H:%M:%S')}")
|
|
future_time = now + timedelta(seconds=15)
|
|
print(f"scheduling for \t {future_time.strftime('%H:%M:%S')}")
|
|
|
|
print_printer_wf.schedule(future_time, input=input)
|
|
|
|
|
|
@print_schedule_wf.task()
|
|
def step1(input: PrinterInput, ctx: Context) -> None:
|
|
now = datetime.now()
|
|
print(f"printed at \t {now.strftime('%H:%M:%S')}")
|
|
print(f"message \t {input.message}")
|
|
|
|
|
|
def main() -> None:
|
|
worker = hatchet.worker(
|
|
"delayed-worker", slots=4, workflows=[print_schedule_wf, print_printer_wf]
|
|
)
|
|
|
|
worker.start()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|