Fixed celery task logging and added filehandler
This commit is contained in:
parent
863d6619ba
commit
e5edd2a7f4
|
@ -2,9 +2,7 @@
|
|||
|
||||
import logging
|
||||
|
||||
from django.conf import settings
|
||||
#from django.core.exceptions import ProgrammingError
|
||||
from django.db import connection, migrations, ProgrammingError
|
||||
from django.db import migrations, ProgrammingError
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -15,6 +13,58 @@ TABLES_TO_COMPRESS = [
|
|||
"website_pipelinedata",
|
||||
]
|
||||
|
||||
MYSQL_MIN_VERSION = (5, 7, 0)
|
||||
|
||||
ALTER_SQL = "ALTER TABLE %s COMPRESSION='%s'"
|
||||
OPTIMIZE_SQL = "OPTIMIZE TABLE %s"
|
||||
|
||||
|
||||
def compression_supported(schema_editor):
|
||||
supported = False
|
||||
dbms = schema_editor.connection.vendor
|
||||
|
||||
if dbms == 'mysql':
|
||||
with schema_editor.connection.cursor() as cursor:
|
||||
cursor.execute('SELECT VERSION()')
|
||||
res = cursor.fetchone()[0]
|
||||
|
||||
version_str = res.split('-')[0]
|
||||
version = tuple(int(v) for v in version_str.split('.'))
|
||||
assert len(version) == len(MYSQL_MIN_VERSION), \
|
||||
'MySQL - current version: {}, min version: {}'.format(version, MYSQL_MIN_VERSION)
|
||||
|
||||
if version >= MYSQL_MIN_VERSION:
|
||||
supported = True
|
||||
LOG.debug("%s %s: table compression supported.", dbms.upper(), version_str)
|
||||
else:
|
||||
LOG.debug("%s %s: table compression NOT supported.", dbms.upper(), version_str)
|
||||
else:
|
||||
LOG.debug("%s: table compression NOT supported.", dbms.upper())
|
||||
|
||||
return supported
|
||||
|
||||
|
||||
def enable_compression(apps, schema_editor):
|
||||
# try:
|
||||
if compression_supported(schema_editor):
|
||||
for table in TABLES_TO_COMPRESS:
|
||||
schema_editor.execute(ALTER_SQL % (table, 'zlib'))
|
||||
schema_editor.execute(OPTIMIZE_SQL % table)
|
||||
|
||||
# except ProgrammingError:
|
||||
# LOG.warning("Error applying forward migration '0002_enable_compression'... Skipping.")
|
||||
|
||||
|
||||
def disable_compression(apps, schema_editor):
|
||||
try:
|
||||
if compression_supported(schema_editor):
|
||||
for table in TABLES_TO_COMPRESS:
|
||||
schema_editor.execute(ALTER_SQL % (table, 'none'))
|
||||
schema_editor.execute(OPTIMIZE_SQL % table)
|
||||
|
||||
except ProgrammingError:
|
||||
LOG.warning("Error applying reverse migration '0002_enable_compression'... Skipping.")
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
|
@ -22,37 +72,6 @@ class Migration(migrations.Migration):
|
|||
('website', '0001_initial'),
|
||||
]
|
||||
|
||||
try:
|
||||
if connection.vendor == 'mysql':
|
||||
operations = [migrations.RunPython(enable_compression, disable_compression)]
|
||||
|
||||
version = (0, 0, 0)
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute('SELECT VERSION()')
|
||||
version = cursor.fetchone()[0]
|
||||
|
||||
version_str = version.split('-')[0]
|
||||
version = version_str.split('.')
|
||||
version = tuple(int(v) for v in version)
|
||||
|
||||
if version >= (5, 7, 0):
|
||||
operations = [
|
||||
migrations.RunSQL(["ALTER TABLE " + table_name + " COMPRESSION='zlib';",
|
||||
"OPTIMIZE TABLE " + table_name + ";"],
|
||||
["ALTER TABLE " + table_name + " COMPRESSION='none';",
|
||||
"OPTIMIZE TABLE " + table_name + ";"])
|
||||
for table_name in TABLES_TO_COMPRESS
|
||||
]
|
||||
LOG.debug("Enabled compression for '%s %s'", connection.vendor, version_str)
|
||||
|
||||
else:
|
||||
operations = []
|
||||
LOG.debug("Disabled compression for '%s %s': version not supported",
|
||||
connection.vendor, version_str)
|
||||
|
||||
else:
|
||||
LOG.debug("Disabled compression for '%s': vendor not supported", connection.vendor)
|
||||
|
||||
except ProgrammingError as err:
|
||||
LOG.warning("Error applying migration '0002_enable_compression'... Skipping")
|
||||
operations = []
|
||||
|
||||
|
|
|
@ -123,8 +123,8 @@ class MetricManager(models.Manager):
|
|||
|
||||
@staticmethod
|
||||
def get_metric_meta(dbms, target_objective=None):
|
||||
numeric_metric_names = MetricCatalog.objects.filter(
|
||||
dbms=dbms, metric_type=MetricType.COUNTER).values_list('name', flat=True)
|
||||
numeric_metric_names = MetricCatalog.objects.filter(dbms=dbms).exclude(
|
||||
metric_type=MetricType.INFO).values_list('name', flat=True)
|
||||
numeric_metrics = {}
|
||||
for metname in numeric_metric_names:
|
||||
numeric_metrics[metname] = MetricMeta(
|
||||
|
|
|
@ -33,10 +33,6 @@ CONFIG_DIR = join(PROJECT_ROOT, 'config')
|
|||
# Where the log files are stored
|
||||
LOG_DIR = join(PROJECT_ROOT, 'log')
|
||||
|
||||
# File/directory upload permissions
|
||||
FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o664
|
||||
FILE_UPLOAD_PERMISSIONS = 0o664
|
||||
|
||||
# Path to OtterTune's website and ML modules
|
||||
OTTERTUNE_LIBS = dirname(PROJECT_ROOT)
|
||||
|
||||
|
@ -111,7 +107,7 @@ MEDIA_URL = '/media/'
|
|||
# Don't put anything in this directory yourself; store your static files
|
||||
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
|
||||
# Example: "/var/www/example.com/static/"
|
||||
STATIC_ROOT = join(PROJECT_ROOT, 'website', 'static')
|
||||
STATIC_ROOT = join(PROJECT_ROOT, 'static')
|
||||
|
||||
# URL prefix for static files.
|
||||
# Example: "http://example.com/static/", "http://static.example.com/"
|
||||
|
@ -218,6 +214,8 @@ CELERYD_MAX_TASKS_PER_CHILD = 50
|
|||
# Number of concurrent workers.
|
||||
CELERYD_CONCURRENCY = 8
|
||||
|
||||
CELERYD_HIJACK_ROOT_LOGGER = False
|
||||
|
||||
djcelery.setup_loader()
|
||||
|
||||
# ==============================================
|
||||
|
@ -247,8 +245,16 @@ LOGGING = {
|
|||
'backupCount': 2,
|
||||
'formatter': 'standard',
|
||||
},
|
||||
'celery': {
|
||||
'level': 'DEBUG',
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': join(LOG_DIR, 'celery.log'),
|
||||
'maxBytes': 50000,
|
||||
'backupCount': 2,
|
||||
'formatter': 'standard',
|
||||
},
|
||||
'console': {
|
||||
'level': 'INFO',
|
||||
'level': 'DEBUG',
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'standard'
|
||||
},
|
||||
|
@ -276,7 +282,6 @@ LOGGING = {
|
|||
},
|
||||
'website': {
|
||||
'handlers': ['console', 'logfile'],
|
||||
'propagate': False,
|
||||
'level': 'DEBUG',
|
||||
},
|
||||
'django.request': {
|
||||
|
@ -284,6 +289,11 @@ LOGGING = {
|
|||
'level': 'DEBUG',
|
||||
'propagate': False,
|
||||
},
|
||||
'celery': {
|
||||
'handlers': ['console', 'celery'],
|
||||
'level': 'DEBUG',
|
||||
'propogate': True,
|
||||
},
|
||||
# Uncomment to email admins after encountering an error (and debug=False)
|
||||
# 'django.request': {
|
||||
# 'handlers': ['mail_admins'],
|
||||
|
|
Loading…
Reference in New Issue