Set task SLA dynamically from DB/S3/Airflow variable

What is the best way to set the SLA task attribute dynamically?
Currently, the values are being fetched from Redshift and with every DAG parse, there is a DB call. I understand that it is not advised to have any DB calls in top level code. Thinking of airflow variables to hold a serialized object from DB and then access that variable while creating task instance .

taskOperator(id, sla=AirflowVariable)