mirror of
https://github.com/apache/superset.git
synced 2026-04-20 00:24:38 +00:00
refactor: Ensure Celery leverages the Flask-SQLAlchemy session (#26186)
This commit is contained in:
@@ -39,10 +39,9 @@ from sqlalchemy.engine.base import Engine
|
||||
from sqlalchemy.engine.reflection import Inspector
|
||||
from sqlalchemy.engine.result import Row as ResultRow
|
||||
from sqlalchemy.engine.url import URL
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.sql.expression import ColumnClause, Select
|
||||
|
||||
from superset import cache_manager, is_feature_enabled
|
||||
from superset import cache_manager, db, is_feature_enabled
|
||||
from superset.common.db_query_status import QueryStatus
|
||||
from superset.constants import TimeGrain
|
||||
from superset.databases.utils import make_url_safe
|
||||
@@ -1288,11 +1287,11 @@ class PrestoEngineSpec(PrestoBaseEngineSpec):
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def handle_cursor(cls, cursor: Cursor, query: Query, session: Session) -> None:
|
||||
def handle_cursor(cls, cursor: Cursor, query: Query) -> None:
|
||||
"""Updates progress information"""
|
||||
if tracking_url := cls.get_tracking_url(cursor):
|
||||
query.tracking_url = tracking_url
|
||||
session.commit()
|
||||
db.session.commit()
|
||||
|
||||
query_id = query.id
|
||||
poll_interval = query.database.connect_args.get(
|
||||
@@ -1308,7 +1307,7 @@ class PrestoEngineSpec(PrestoBaseEngineSpec):
|
||||
# Update the object and wait for the kill signal.
|
||||
stats = polled.get("stats", {})
|
||||
|
||||
query = session.query(type(query)).filter_by(id=query_id).one()
|
||||
query = db.session.query(type(query)).filter_by(id=query_id).one()
|
||||
if query.status in [QueryStatus.STOPPED, QueryStatus.TIMED_OUT]:
|
||||
cursor.cancel()
|
||||
break
|
||||
@@ -1332,7 +1331,7 @@ class PrestoEngineSpec(PrestoBaseEngineSpec):
|
||||
)
|
||||
if progress > query.progress:
|
||||
query.progress = progress
|
||||
session.commit()
|
||||
db.session.commit()
|
||||
time.sleep(poll_interval)
|
||||
logger.info("Query %i: Polling the cursor for progress", query_id)
|
||||
polled = cursor.poll()
|
||||
|
||||
Reference in New Issue
Block a user