23
23
import json
24
24
import pathlib
25
25
from urllib .parse import urlparse
26
- from firebase_admin import initialize_app , storage
26
+ from firebase_admin import initialize_app , storage , functions
27
27
from firebase_functions import https_fn , tasks_fn , params
28
28
import google .auth
29
29
from google .auth .transport .requests import AuthorizedSession
@@ -96,9 +96,7 @@ def backupapod(req: tasks_fn.CallableRequest) -> str:
96
96
@https_fn .on_request ()
97
97
def enqueuebackuptasks (_ : https_fn .Request ) -> https_fn .Response :
98
98
"""Adds backup tasks to a Cloud Tasks queue."""
99
- tasks_client = tasks_v2 .CloudTasksClient ()
100
- task_queue = tasks_client .queue_path (params .PROJECT_ID .value , SupportedRegion .US_CENTRAL1 ,
101
- "backupapod" )
99
+ task_queue = functions .task_queue ("backupapod" )
102
100
target_uri = get_function_url ("backupapod" )
103
101
104
102
for i in range (BACKUP_COUNT ):
@@ -108,19 +106,14 @@ def enqueuebackuptasks(_: https_fn.Request) -> https_fn.Response:
108
106
schedule_delay = timedelta (hours = batch )
109
107
schedule_time = datetime .now () + schedule_delay
110
108
109
+ dispatch_deadline_seconds = 60 * 5 # 5 minutes
110
+
111
111
backup_date = BACKUP_START_DATE + timedelta (days = i )
112
112
body = {"data" : {"date" : backup_date .isoformat ()[:10 ]}}
113
- task = tasks_v2 .Task (http_request = {
114
- "http_method" : tasks_v2 .HttpMethod .POST ,
115
- "url" : target_uri ,
116
- "headers" : {
117
- "Content-type" : "application/json"
118
- },
119
- "body" : json .dumps (body ).encode ()
120
- },
121
- schedule_time = schedule_time )
122
- tasks_client .create_task (parent = task_queue , task = task )
123
-
113
+ task_options = functions .TaskOptions (schedule_time = schedule_time ,
114
+ dispatch_deadline_seconds = dispatch_deadline_seconds ,
115
+ uri = target_uri )
116
+ task_queue .enqueue (body , task_options )
124
117
return https_fn .Response (status = 200 , response = f"Enqueued { BACKUP_COUNT } tasks" )
125
118
# [END v2EnqueueTasks]
126
119
0 commit comments