|
8 | 8 |
|
9 | 9 | @workflow.defn |
10 | 10 | class Workflow: |
11 | | - def __init__(self): |
12 | | - self.timer: Optional[UpdatableTimer] = None |
13 | | - |
14 | | - @workflow.run |
15 | | - async def run(self, wake_up_time: float): |
| 11 | + @workflow.init |
| 12 | + def __init__(self, wake_up_time: float) -> None: |
16 | 13 | self.timer = UpdatableTimer( |
17 | 14 | datetime.fromtimestamp(wake_up_time, tz=timezone.utc) |
18 | 15 | ) |
| 16 | + |
| 17 | + @workflow.run |
| 18 | + async def run(self, wake_up_time: float): |
19 | 19 | await self.timer.sleep() |
20 | 20 |
|
21 | 21 | @workflow.signal |
22 | | - async def update_wake_up_time(self, wake_up_time: float): |
23 | | - # Deals with situation when the signal method is called before the run method. |
24 | | - # This happens when a workflow task is executed after a signal is received |
25 | | - # or when a workflow is started using the signal-with-start. |
26 | | - await workflow.wait_condition(lambda: self.timer is not None) |
27 | | - assert self.timer is not None # for mypy |
| 22 | + async def update_wake_up_time(self, wake_up_time: float) -> None: |
| 23 | + workflow.logger.info(f"update_wake_up_time: {wake_up_time}") |
| 24 | + |
28 | 25 | self.timer.update_wake_up_time( |
29 | 26 | datetime.fromtimestamp(wake_up_time, tz=timezone.utc) |
30 | 27 | ) |
31 | 28 |
|
32 | 29 | @workflow.query |
33 | | - def get_wake_up_time(self): |
34 | | - assert self.timer is not None # for mypy |
35 | | - return self.timer.get_wake_up_time() |
| 30 | + def get_wake_up_time(self) -> float: |
| 31 | + workflow.logger.info(f"get_wake_up_time") |
| 32 | + return float(self.timer.get_wake_up_time().timestamp()) |
0 commit comments