ct
06/07/2021, 6:57 PMJenny
06/07/2021, 7:23 PMJenny
06/07/2021, 7:35 PMimport prefect
from prefect import task, Flow
import logging
class AwesomeFilter(logging.Filter):
def filter(self, rec):
if 'tes' in rec.msg:
return 0
# you may need to filter based on `getMessage()` if
# you can't find the information in the pre-formatted msg field
return 1
@task
def abc():
<http://logger.info|logger.info>("teting") # gets shows
<http://logger.info|logger.info>("testing") # gets hidden
return 1
@task
def bcd():
<http://logger.info|logger.info>("teting") # gets shows
<http://logger.info|logger.info>("testing") # gets hidden
return 1
with Flow("test") as flow:
logger = prefect.context.get("logger")
logger.addFilter(AwesomeFilter())
abc()
bcd()
flow.run()
Chris Vrooman
06/07/2021, 8:07 PMimport traceback
from prefect import task
from functools import partial, wraps
def custom_task(func=None, **task_init_kwargs):
if func is None:
return partial(custom_task, **task_init_kwargs)
@wraps(func)
def safe_func(**kwargs):
try:
return func(**kwargs)
except Exception as e:
print(f"Full Traceback: {traceback.format_exc()}")
raise RuntimeError(type(e)) from None # from None is necessary to not log the stacktrace
safe_func.__name__ = func.__name__
return task(safe_func, **task_init_kwargs)
Then just decorate your functions with @custom_taskct
06/08/2021, 8:36 AMJenny
06/08/2021, 12:45 PM