chrisonntag / mmetering-server

Smart metering for community houses based on Python+Django, Redis, Celery and serial communication.
0 stars 0 forks source link

Send monthly accounting file on the first day of the new month for the past month #34

Closed chrisonntag closed 3 years ago

chrisonntag commented 5 years ago

Clearly not resolved.

trace[ERROR]:2018-12-01 02:00:16,253: Task send_meter_data_email_task[93e0e71b-f4b1-4d19-99ef-bd8ea0855dc1] raised unexpected: AttributeError("'_Frame' object has no attribute 'f_back'",)

AttributeError
'_Frame' object has no attribute 'f_back'

Django Version: 1.10.4
Python Executable: /usr/local/bin/python
Python Version: 3.6.6
Python Path: ['/usr/local/bin', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages', '/mmetering-server']
Server time: Sa, 1 Dez 2018 02:00:16 +0100
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'celery',
'mmetering.apps.MmeteringConfig',
'backend.apps.BackendConfig',
'evcs.apps.EvcsConfig',
'mmio.apps.MMioConfig',
'rest_framework']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback:  

File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py" in trace_task
 367.                     R = retval = fun(*args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py" in __protected_call__
 622.                 return self.run(*args, **kwargs)

File "/mmetering-server/backend/tasks.py" in send_meter_data_email_task
 64.     send_data_email(last_month)

File "/mmetering-server/mmetering/emails.py" in send_data_email
 86.     filename = "mmetering%s%s.xlsx" % (date.strftime("%b"), str(datetime.today()))

     During handling of the above exception (name 'date' is not defined), another exception occurred:

File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py" in trace_task
 381.                     I, R, state, retval = on_error(task_request, exc, uuid)

File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py" in on_error
 323.             task, request, eager=eager, call_errbacks=call_errbacks,

File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py" in handle_error_state
 157.                       call_errbacks=call_errbacks)

File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py" in handle_failure
 211.             self._log_error(task, req, einfo)

File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py" in _log_error
 241.                    extra={'data': context})

File "/usr/local/lib/python3.6/logging/__init__.py" in log
 1373.             self._log(level, msg, args, **kwargs)

File "/usr/local/lib/python3.6/logging/__init__.py" in _log
 1443.         self.handle(record)

File "/usr/local/lib/python3.6/logging/__init__.py" in handle
 1453.             self.callHandlers(record)

File "/usr/local/lib/python3.6/logging/__init__.py" in callHandlers
 1515.                     hdlr.handle(record)

File "/usr/local/lib/python3.6/logging/__init__.py" in handle
 864.                 self.emit(record)

File "/usr/local/lib/python3.6/site-packages/django/utils/log.py" in emit
 119.         message = "%s\n\n%s" % (self.format(no_exc_record), reporter.get_traceback_text())

File "/usr/local/lib/python3.6/site-packages/django/views/debug.py" in get_traceback_text
 322.         c = Context(self.get_traceback_data(), autoescape=False, use_l10n=False)

File "/usr/local/lib/python3.6/site-packages/django/views/debug.py" in get_traceback_data
 261.         frames = self.get_traceback_frames()

File "/usr/local/lib/python3.6/site-packages/django/views/debug.py" in get_traceback_frames
 417.                     'vars': self.filter.get_traceback_frame_variables(self.request, tb.tb_frame),

File "/usr/local/lib/python3.6/site-packages/django/views/debug.py" in get_traceback_frame_variables
 190.         current_frame = tb_frame.f_back

Exception Type: AttributeError
Exception Value: '_Frame' object has no attribute 'f_back'
Request data not supplied

Settings:
Using settings module mmetering_server.settings
ABSOLUTE_URL_OVERRIDES = {}
ADMINS = ('Christoph Sonntag', 'info@chrisonntag.com')
ALLOWED_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/mmetering-server'
BROKER_URL = 'redis://redis:6379/0'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
CELERYBEAT_MAX_LOOP_INTERVAL = 900
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_SEND_TASK_ERROR_EMAILS = True
CELERY_TASK_SERIALIZER = 'json'
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'OPTIONS': {'read_default_file': '/mmetering-server/my.cnf'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'NAME': '', 'USER': '', 'PASSWORD': '********************', 'HOST': '', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'noreply@mmetering.chrisonntag.com'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DEFAULT_TO_EMAIL = ['info@chrisonntag.com', 'ich.christophs@web.de']
DISALLOWED_USER_AGENTS = []
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_FROM = 'noreply@mmetering.chrisonntag.com'
EMAIL_HOST = 'phoenix.uberspace.de'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = 'info@chrisonntag.com'
EMAIL_PORT = 587
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
IGNORABLE_404_URLS = []
INSTALLED_APPS = ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'celery', 'mmetering.apps.MmeteringConfig', 'backend.apps.BackendConfig', 'evcs.apps.EvcsConfig', 'mmio.apps.MMioConfig', 'rest_framework']
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'de-de'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = []
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'formatters': {'standard': {'format': '%(module)s[%(levelname)s]:%(asctime)s: %(message)s'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler', 'include_html': False, 'formatter': 'standard'}, 'file': {'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/var/log/mmetering/mmetering.log', 'formatter': 'standard'}, 'console': {'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'standard'}}, 'loggers': {'': {'handlers': ['file', 'mail_admins', 'console'], 'level': 'DEBUG'}, 'django.security.DisallowedHost': {'handlers': ['console'], 'propagate': False}}}
LOGGING_CONFIG = None
LOGIN_REDIRECT_URL = 'home'
LOGIN_URL = 'login'
LOGLEVEL = 'DEBUG'
LOGOUT_REDIRECT_URL = None
MANAGERS = ('Christoph Sonntag', 'info@chrisonntag.com')
MEDIA_ROOT = '/mmetering-server/media'
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
MIDDLEWARE_CLASSES = ['django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware']
MIGRATION_MODULES = {}
MODBUS_PORT = '/dev/ttyUSB0'
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
PREPEND_WWW = False
PRODUCTION = True
ROOT_URLCONF = 'mmetering_server.urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root@localhost'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE = 'mmetering_server.settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
STATICFILES_DIRS = []
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/mmetering-server/static'
STATIC_URL = '/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/mmetering-server/templates'], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'CET'
USE_ETAGS = False
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = False
USE_X_FORWARDED_HOST = False
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'mmetering_server.wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'