omergertel / pyformance

Performance metrics, based on Coda Hale's Yammer metrics
Other
195 stars 72 forks source link

sanic multi worker metrics are not populated #58

Open alexterman opened 6 years ago

alexterman commented 6 years ago

I am trying to add metrics to sanic application. When running 1 worker everything looks fine, but when configuring more workers no metrics being sent to carbon.

import random
import time

from sanic import Sanic
from sanic.response import json

from pyformance import MetricsRegistry
from pyformance.reporters.carbon_reporter import CarbonReporter

registry = MetricsRegistry()
__reporter__ = CarbonReporter(registry=registry,
                              reporting_interval=10,
                              prefix='sanic',
                              server='localhost',
                              port=2003)
__reporter__.start()
app = Sanic()

@app.route("/api/v1/foo", methods=["POST"])
def foo(request):

    timer = registry.timer(".foo")
    with timer.time():
        time.sleep(random.randint(1, 2))
        return json({"status": True})

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=20100, workers=1, access_log=False, debug=False)
omergertel commented 6 years ago

Sorry, no idea what Sanic is. Could this be because of threading or forking?

alexterman commented 6 years ago

@omergertel thanks for the answer, is pyformance should be used in a single-threaded environment?