mirror of
https://github.com/hatchet-dev/hatchet.git
synced 2026-03-17 18:22:39 -05:00
* feat: initial ruby sdk * fix: run listener * fix: scope * feat: rest feature clients * fix: bugs * fix: concurrent register * fix: tests and ergonomics * docs: all of them * chore: lint * feat: add RBS * feat: add GitHub Actions workflow for Ruby SDK with linting, testing, and publishing steps * chore: lint * refactor: simplify load path setup for Hatchet REST client and remove symlink creation * fix: cert path * fix: test * fix: blocking * fix: ensure Hatchet client is only initialized once across examples * fix: tests * remove: unused example * fix: bubble up errors * test: skip flaky for now * remove: lifespans * fix: durable context bugs * fix: bulk replay * fix: tests * cleanup: generate tooling * fix: integration test * chore: lint * release: 0.1.0 * chore: remove python comments * refactor: remove OpenTelemetry configuration and related unused options * fix: default no healthcheck * chore: lockfile * feat: register as ruby * chore: lint * chore: update py/ts apis to include ruby * chore: docs pass * chore: lint * chore: generate * chore: cleanup * chore: generate examples * tests: add e2e tests * tests: cache examples dependencies * fix: namespace * fix: namespace * fix: namespaces * chore:lint * fix: improve cancellation workflow polling logic and add error handling * revert: py/ts versions
46 lines
1.1 KiB
Ruby
46 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "hatchet-sdk"
|
|
|
|
HATCHET = Hatchet::Client.new(debug: true) unless defined?(HATCHET)
|
|
|
|
SIMPLE_RETRY_WORKFLOW = HATCHET.workflow(name: "SimpleRetryWorkflow")
|
|
BACKOFF_WORKFLOW = HATCHET.workflow(name: "BackoffWorkflow")
|
|
|
|
# > Simple Step Retries
|
|
SIMPLE_RETRY_WORKFLOW.task(:always_fail, retries: 3) do |input, ctx|
|
|
raise "simple task failed"
|
|
end
|
|
|
|
|
|
# > Retries with Count
|
|
SIMPLE_RETRY_WORKFLOW.task(:fail_twice, retries: 3) do |input, ctx|
|
|
raise "simple task failed" if ctx.retry_count < 2
|
|
|
|
{ "status" => "success" }
|
|
end
|
|
|
|
|
|
# > Retries with Backoff
|
|
BACKOFF_WORKFLOW.task(
|
|
:backoff_task,
|
|
retries: 10,
|
|
# Maximum number of seconds to wait between retries
|
|
backoff_max_seconds: 10,
|
|
# Factor to increase the wait time between retries.
|
|
# This sequence will be 2s, 4s, 8s, 10s, 10s, 10s... due to the maxSeconds limit
|
|
backoff_factor: 2.0
|
|
) do |input, ctx|
|
|
raise "backoff task failed" if ctx.retry_count < 3
|
|
|
|
{ "status" => "success" }
|
|
end
|
|
|
|
|
|
def main
|
|
worker = HATCHET.worker("backoff-worker", slots: 4, workflows: [BACKOFF_WORKFLOW])
|
|
worker.start
|
|
end
|
|
|
|
main if __FILE__ == $PROGRAM_NAME
|