# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL LIBRATO, INC. BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import sys from librato_python_web.instrumentor import bootstrap bootstrap.init() # Gather every top-level module we instrument unexpected = set() for lib in bootstrap._instrumentors: for instrumentor in bootstrap._instrumentors[lib]: for module in instrumentor.modules: unexpected.add(module.split('.')[0]) # Gather top-level modules that actually exist actual = set([m.split('.')[0] for m in sys.modules]) for prefix in actual: assert prefix not in unexpected, "Module %s was unexpectedly loaded" % prefix
from librato_python_web.instrumentor import bootstrap bootstrap.init() import gevent from gevent import monkey monkey.patch_all() import requests import werkzeug.serving # Ensure the patched libs are in use assert 'gevent' in requests.adapters.socket.socket.__module__, "Requests used unpatched socket" assert 'gevent' in werkzeug.serving.socket.socket.__module__, "Werkzeug used unpatched socket"
import os from librato_python_web.instrumentor.bootstrap import init os.environ['LIBRATO_INTEGRATION'] = 'django' init()