Skip to content

Commit 627eb1f

Browse files
committed
feat: unify scheduled function timeout and attempt deadline
1 parent a5f82a7 commit 627eb1f

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

src/firebase_functions/options.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,7 @@ def _endpoint(
869869
schedule=self.schedule,
870870
timeZone=time_zone,
871871
retryConfig=retry_config,
872+
attemptDeadlineSeconds=self.timeout_sec,
872873
),
873874
}
874875
return _manifest.ManifestEndpoint(**_typing.cast(dict, kwargs_merged))

src/firebase_functions/private/manifest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ class ScheduleTrigger(_typing.TypedDict):
125125
schedule: str | _params.Expression[str]
126126
timeZone: str | _params.Expression[str] | _util.Sentinel | None
127127
retryConfig: RetryConfigScheduler | None
128+
attemptDeadlineSeconds: int | _params.Expression[int] | _util.Sentinel | None
128129

129130

130131
class BlockingTriggerOptions(_typing.TypedDict):

tests/test_scheduler_fn.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ def test_on_schedule_decorator(self):
4747
self.assertEqual(endpoint.scheduleTrigger.get("schedule"), schedule)
4848
self.assertEqual(endpoint.scheduleTrigger.get("timeZone"), tz)
4949

50+
def test_on_schedule_with_timeout(self):
51+
"""
52+
Tests that attemptDeadlineSeconds is set to timeoutSeconds.
53+
"""
54+
decorated_func = scheduler_fn.on_schedule(
55+
schedule="* * * * *",
56+
timeout_sec=120,
57+
)(Mock(__name__="example_func"))
58+
endpoint = decorated_func.__firebase_endpoint__
59+
self.assertEqual(endpoint.timeoutSeconds, 120)
60+
self.assertEqual(endpoint.scheduleTrigger.get("attemptDeadlineSeconds"), 120)
61+
5062
def test_on_schedule_call(self):
5163
"""
5264
Tests to ensure the decorated function is called correctly

0 commit comments

Comments
 (0)