mirror of
https://github.com/apache/superset.git
synced 2026-05-12 19:35:17 +00:00
fix(tasks): Add type hints to scheduler signal handler and task
Added proper type hints to the `log_task_failure` signal handler and the `scheduler` task function to fix type checking errors. - Added type annotations for all signal handler parameters - Added `self: Task` parameter to scheduler function (required when bind=True) - Added pylint directives for unused arguments - Fixed logging to use % formatting instead of f-strings - Added null check for sender before accessing .name attribute 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -41,19 +41,33 @@ from superset.utils.log import get_logger_from_status
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@task_failure.connect
|
@task_failure.connect
|
||||||
def log_task_failure(sender=None, task_id=None, exception=None, args=None, kwargs=None, traceback=None, einfo=None, **kw):
|
def log_task_failure( # pylint: disable=unused-argument
|
||||||
logger.exception(f"Celery task {sender.name} failed: {exception}", exc_info=einfo)
|
sender: Task | None = None,
|
||||||
|
task_id: str | None = None,
|
||||||
|
exception: Exception | None = None,
|
||||||
|
args: tuple[Any, ...] | None = None,
|
||||||
|
kwargs: dict[str, Any] | None = None,
|
||||||
|
traceback: Any = None,
|
||||||
|
einfo: Any = None,
|
||||||
|
**kw: Any,
|
||||||
|
) -> None:
|
||||||
|
task_name = sender.name if sender else "Unknown"
|
||||||
|
logger.exception("Celery task %s failed: %s", task_name, exception, exc_info=einfo)
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(
|
@celery_app.task(
|
||||||
name="reports.scheduler",
|
name="reports.scheduler",
|
||||||
bind=True,
|
bind=True,
|
||||||
autoretry_for=(Exception,),
|
autoretry_for=(Exception,),
|
||||||
retry_kwargs={"max_retries": 3, "countdown": 60}, # Retry up to 3 times, wait 60s between
|
retry_kwargs={
|
||||||
|
"max_retries": 3,
|
||||||
|
"countdown": 60,
|
||||||
|
}, # Retry up to 3 times, wait 60s between
|
||||||
retry_backoff=True, # exponential backoff
|
retry_backoff=True, # exponential backoff
|
||||||
)
|
)
|
||||||
def scheduler() -> None:
|
def scheduler(self: Task) -> None: # pylint: disable=unused-argument
|
||||||
"""
|
"""
|
||||||
Celery beat main scheduler for reports
|
Celery beat main scheduler for reports
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user