Послать сообщение об ошибке на почту из django management commands
По умолчанию вы не сможете получать сообщение об ошибках, если management-команда
выполняется через cron. Но это легко исправить: достаточно добавить в settings.py
дополнительный logger
:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse' } }, 'handlers': { 'mail_admins': { 'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler' } }, 'loggers': { # other loggers 'management_commands': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, } } }
А в manage.py
обернуть команду execute_from_command_line(sys.argv)
исключением Exception
, например так:
if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") from django.core.management import execute_from_command_line from logging import getLogger import traceback logger = getLogger('management_commands') try: execute_from_command_line(sys.argv) except Exception as...