|
@@ -19,6 +19,8 @@ from urllib.parse import urlparse
|
19
|
19
|
import tg
|
20
|
20
|
from paste.deploy.converters import asbool
|
21
|
21
|
from tg.configuration.milestones import environment_loaded
|
|
22
|
+from tgext.asyncjob.trackers.memory import MemoryProgressTracker
|
|
23
|
+from tgext.asyncjob.trackers.redisdb import RedisProgressTracker
|
22
|
24
|
|
23
|
25
|
from tgext.pluggable import plug
|
24
|
26
|
from tgext.pluggable import replace_template
|
|
@@ -339,6 +341,32 @@ class CFG(object):
|
339
|
341
|
if not self.WSGIDAV_CLIENT_BASE_URL.endswith('/'):
|
340
|
342
|
self.WSGIDAV_CLIENT_BASE_URL += '/'
|
341
|
343
|
|
|
344
|
+ self.ASYNC_JOB_TRACKER = tg.config.get(
|
|
345
|
+ 'asyncjob.tracker',
|
|
346
|
+ 'memory',
|
|
347
|
+ )
|
|
348
|
+
|
|
349
|
+ if self.ASYNC_JOB_TRACKER not in ('memory', 'redis'):
|
|
350
|
+ raise Exception(
|
|
351
|
+ 'asyncjob.tracker configuration '
|
|
352
|
+ 'can ''be "memory" or "redis", not "{0}"'.format(
|
|
353
|
+ self.ASYNC_JOB_TRACKER,
|
|
354
|
+ )
|
|
355
|
+ )
|
|
356
|
+
|
|
357
|
+ if self.ASYNC_JOB_TRACKER == 'redis':
|
|
358
|
+ self.ASYNC_JOB_TRACKER_REDIS_HOST = tg.config.get(
|
|
359
|
+ 'asyncjob.tracker.redis.host',
|
|
360
|
+ 'localhost',
|
|
361
|
+ )
|
|
362
|
+ self.ASYNC_JOB_TRACKER_REDIS_PORT = int(tg.config.get(
|
|
363
|
+ 'asyncjob.tracker.redis.port',
|
|
364
|
+ 6379,
|
|
365
|
+ ))
|
|
366
|
+ self.ASYNC_JOB_TRACKER_REDIS_DB = int(tg.config.get(
|
|
367
|
+ 'asyncjob.tracker.redis.db',
|
|
368
|
+ 15,
|
|
369
|
+ ))
|
342
|
370
|
|
343
|
371
|
def get_tracker_js_content(self, js_tracker_file_path = None):
|
344
|
372
|
js_tracker_file_path = tg.config.get('js_tracker_path', None)
|
|
@@ -381,4 +409,29 @@ base_config.variable_provider = lambda: {
|
381
|
409
|
'CFG': CFG.get_instance()
|
382
|
410
|
}
|
383
|
411
|
|
384
|
|
-plug(base_config, 'tgext.asyncjob')
|
|
412
|
+
|
|
413
|
+def plug_asyncjob():
|
|
414
|
+ cfg = CFG.get_instance()
|
|
415
|
+
|
|
416
|
+ # # Manual creation of async job tracker to be able to log it
|
|
417
|
+ async_job_tracker = cfg.ASYNC_JOB_TRACKER
|
|
418
|
+ if async_job_tracker == 'redis':
|
|
419
|
+ async_job_progress_tracker = RedisProgressTracker(
|
|
420
|
+ host=cfg.ASYNC_JOB_TRACKER_REDIS_HOST,
|
|
421
|
+ port=cfg.ASYNC_JOB_TRACKER_REDIS_PORT,
|
|
422
|
+ db=cfg.ASYNC_JOB_TRACKER_REDIS_DB,
|
|
423
|
+ )
|
|
424
|
+ else:
|
|
425
|
+ async_job_progress_tracker = MemoryProgressTracker()
|
|
426
|
+
|
|
427
|
+ logger.info(
|
|
428
|
+ cfg,
|
|
429
|
+ 'Async job track using {0}'.format(str(async_job_progress_tracker)),
|
|
430
|
+ )
|
|
431
|
+ plug(
|
|
432
|
+ base_config,
|
|
433
|
+ 'tgext.asyncjob',
|
|
434
|
+ progress_tracker=async_job_progress_tracker,
|
|
435
|
+ )
|
|
436
|
+
|
|
437
|
+environment_loaded.register(lambda: plug_asyncjob())
|