I see my original message was held up in moderation due to the large 
attachment.  I've uploaded the image to File:Screenshot of viztracer output.png 
<https://commons.wikimedia.org/wiki/File:Screenshot_of_viztracer_output.png>



> On Jan 13, 2023, at 6:38 PM, Roy Smith <r...@panix.com> wrote:
> 
> 
> I just discovered viztracer.  
> https://viztracer.readthedocs.io/en/stable/index.html 
> <https://viztracer.readthedocs.io/en/stable/index.html>
> 
> I've been trying to figure out why my pywikibot app is so slow.  It took me 
> about 1 minute to instrument my code (see diff), I hit my URL in a browser, 
> and loaded up the resulting json file into visviewer.  Now I'm scrolling 
> around and drilling down into a total execution trace of my code, although it 
> really only took a moment to see that most of the time is in 11 serialized 
> API calls.  This is easily the coolest performance analysis tool I've ever 
> used.
> 
> <Screen Shot 2023-01-13 at 6.32.31 PM.png>
> 
> diff --git a/dyk_web/core.py b/dyk_web/core.py
> index 31758dc..1e58203 100644
> --- a/dyk_web/core.py
> +++ b/dyk_web/core.py
> @@ -28,11 +28,16 @@ def get_pending_nominations():
>      return titles
>  
>  
> +from viztracer import VizTracer
> +from pathlib import Path
> +
> +
>  @bp.route("/display")
>  def display():
>      """template_name query arg is the DYK nomination template, including the 
> Template: prefix."""
> -    current_app.logger.info <http://current_app.logger.info/>("Running on 
> %s", os.uname().nodename)
> -    page = Page(g.site <http://g.site/>, request.args["template_name"])
> -    nomination = Nomination(page)
> -    nomination_data = NominationData.from_nomination(nomination)
> -    return render_template("display.html", nomination=nomination_data)
> +    with VizTracer(output_file=str(Path.home() / "viztracer.json")):
> +        current_app.logger.info <http://current_app.logger.info/>("Running 
> on %s", os.uname().nodename)
> +        page = Page(g.site <http://g.site/>, request.args["template_name"])
> +        nomination = Nomination(page)
> +        nomination_data = NominationData.from_nomination(nomination)
> +        return render_template("display.html", nomination=nomination_data)
> 

_______________________________________________
pywikibot mailing list -- pywikibot@lists.wikimedia.org
Public archives at 
https://lists.wikimedia.org/hyperkitty/list/pywikibot@lists.wikimedia.org/message/GCCQLHSTYWSKCFWXBSR7BSGB5GZWJSCE/
To unsubscribe send an email to pywikibot-le...@lists.wikimedia.org

Reply via email to