Skip to content

Commit 4abfc3d

Browse files
committed
refactored cloud functions db session management
1 parent 0dd9e97 commit 4abfc3d

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

functions-python/gbfs_validator/src/main.py

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
PipelineStage,
1919
MaxExecutionsReachedError,
2020
)
21-
from helpers.database import start_db_session
21+
from helpers.database import Database
2222
from helpers.logger import Logger, StableIdFilter
2323
from helpers.parser import jsonify_pubsub
2424
from .gbfs_utils import (
@@ -34,19 +34,18 @@
3434

3535

3636
def fetch_all_gbfs_feeds() -> List[Gbfsfeed]:
37-
session = None
37+
db = Database(database_url=os.getenv("FEEDS_DATABASE_URL"))
3838
try:
39-
session = start_db_session(os.getenv("FEEDS_DATABASE_URL"))
40-
gbfs_feeds = (
41-
session.query(Gbfsfeed).options(joinedload(Gbfsfeed.gbfsversions)).all()
42-
)
43-
return gbfs_feeds
39+
with db.start_db_session() as session:
40+
gbfs_feeds = (
41+
session.query(Gbfsfeed).options(joinedload(Gbfsfeed.gbfsversions)).all()
42+
)
43+
return gbfs_feeds
4444
except Exception as e:
4545
logging.error(f"Error fetching all GBFS feeds: {e}")
4646
raise e
4747
finally:
48-
if session:
49-
session.close()
48+
pass
5049

5150

5251
@functions_framework.cloud_event
@@ -92,7 +91,6 @@ def gbfs_validator_pubsub(cloud_event: CloudEvent):
9291
save_trace_with_error(trace, error_message, trace_service)
9392
return error_message
9493

95-
session = None
9694
try:
9795
storage_client = storage.Client()
9896
bucket = storage_client.bucket(BUCKET_NAME)
@@ -108,17 +106,16 @@ def gbfs_validator_pubsub(cloud_event: CloudEvent):
108106
try:
109107
snapshot = validator.create_snapshot(feed_id)
110108
validation_results = validator.validate_gbfs_feed(bucket)
111-
session = start_db_session(os.getenv("FEEDS_DATABASE_URL"))
112-
save_snapshot_and_report(session, snapshot, validation_results)
113-
109+
db = Database(database_url=os.getenv("FEEDS_DATABASE_URL"))
110+
with db.start_db_session() as session:
111+
save_snapshot_and_report(session, snapshot, validation_results)
114112
except Exception as e:
115113
error_message = f"Error validating GBFS feed: {e}"
116114
logging.error(f"{error_message}\nTraceback:\n{traceback.format_exc()}")
117115
save_trace_with_error(trace, error_message, trace_service)
118116
return error_message
119117
finally:
120-
if session:
121-
session.close()
118+
pass
122119

123120
trace.status = Status.SUCCESS
124121
trace_service.save(trace)

functions-python/helpers/feed_sync/feed_sync_dispatcher.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import os
1919
import logging
2020

21+
from helpers.database import Database
2122
from helpers.feed_sync.feed_sync_common import FeedSyncProcessor
2223
from helpers.pub_sub import get_pubsub_client, publish
2324

functions-python/validation_report_processor/src/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import logging
1919
from datetime import datetime
2020
import requests
21-
from database.database import Database
21+
from helpers.database import Database
2222
import functions_framework
2323
from database_gen.sqlacodegen_models import (
2424
Validationreport,

0 commit comments

Comments
 (0)