Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions python/src/activities.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
from temporalio import activity
from params import AskForMoneyParams


class Activities:
# If you wish to connect any dependencies (eg, database), add in here
# def __init__(self, db: DB):
# self.db = db

@activity.defn
async def askForMoney(self, params: AskForMoneyParams) -> str:
return f"{params.greeting} Can I have £{params.amount} please?"

@activity.defn
async def sayName(self, name: str) -> str:
if name == "":
Expand Down
13 changes: 13 additions & 0 deletions python/src/params.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from dataclasses import dataclass


@dataclass
class HelloWorldParams:
amount: int
name: str


@dataclass
class AskForMoneyParams:
amount: int
greeting: str
3 changes: 2 additions & 1 deletion python/src/starter.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from temporalio.envconfig import ClientConfigProfile
import shared
import workflows
from params import HelloWorldParams


async def main():
Expand All @@ -13,7 +14,7 @@ async def main():
client = await Client.connect(**connect_config)
result = await client.execute_workflow(
workflows.HelloWorldWorkflow,
"Hacker",
HelloWorldParams(name="Hacker", amount=100),
id=f"hello-world-workflow-{uuid.uuid4()}",
task_queue=shared.TASK_QUEUE_NAME,
)
Expand Down
16 changes: 13 additions & 3 deletions python/src/workflows.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
import asyncio
from datetime import timedelta
from temporalio import workflow
from activities import Activities
from params import AskForMoneyParams, HelloWorldParams


@workflow.defn
class HelloWorldWorkflow:
@workflow.run
async def run(self, name: str) -> str:
return await workflow.execute_activity(
async def run(self, params: HelloWorldParams) -> str:
greeting = await workflow.execute_activity(
Activities.sayName,
name,
params.name,
schedule_to_close_timeout=timedelta(seconds=10),
)

await asyncio.sleep(10)

return await workflow.execute_activity(
Activities.askForMoney,
AskForMoneyParams(amount=params.amount, greeting=greeting),
schedule_to_close_timeout=timedelta(seconds=10),
)
Loading