Revert "app: Use a ThreadPool to fetch metrics."

Using multiprocessing is at least causing mod_wsgi to throw a hissy fit.
A few other WSGI servers seem to be able to deal with this correctly but
for now, back to serial requests.
This commit is contained in:
Daniele Sluijters
2014-03-13 15:39:20 +01:00
parent 43e449704e
commit 8a186afdde

View File

@@ -9,7 +9,6 @@ try:
except ImportError: except ImportError:
from urllib.parse import unquote from urllib.parse import unquote
from datetime import datetime, timedelta from datetime import datetime, timedelta
from multiprocessing.dummy import Pool as ThreadPool
from flask import ( from flask import (
Flask, render_template, abort, url_for, Flask, render_template, abort, url_for,
@@ -92,17 +91,19 @@ def index():
# TODO: Would be great if we could parallelize this somehow, doing these # TODO: Would be great if we could parallelize this somehow, doing these
# requests in sequence is rather pointless. # requests in sequence is rather pointless.
prefix = 'com.puppetlabs.puppetdb.query.population' prefix = 'com.puppetlabs.puppetdb.query.population'
pool = ThreadPool() num_nodes = get_or_abort(
endpoints = [ puppetdb.metric,
"{0}{1}".format(prefix, ':type=default,name=num-nodes'), "{0}{1}".format(prefix, ':type=default,name=num-nodes'))
"{0}{1}".format(prefix, ':type=default,name=num-resources'), num_resources = get_or_abort(
"{0}{1}".format(prefix, ':type=default,name=avg-resources-per-node'), puppetdb.metric,
] "{0}{1}".format(prefix, ':type=default,name=num-resources'))
fetched_metrics = pool.map(puppetdb.metric, endpoints) avg_resources_node = get_or_abort(
puppetdb.metric,
"{0}{1}".format(prefix, ':type=default,name=avg-resources-per-node'))
metrics = { metrics = {
'num_nodes': fetched_metrics[0]['Value'], 'num_nodes': num_nodes['Value'],
'num_resources': fetched_metrics[1]['Value'], 'num_resources': num_resources['Value'],
'avg_resources_node': "{0:10.0f}".format(fetched_metrics[2]['Value']), 'avg_resources_node': "{0:10.0f}".format(avg_resources_node['Value']),
} }
nodes = puppetdb.nodes( nodes = puppetdb.nodes(