[{"data":1,"prerenderedAt":284},["ShallowReactive",2],{"project-7858828":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":18,"aspects":34,"strip":41,"post_text":44,"what":45,"said":85,"maker_in_thread":178,"shape":188,"grid":192,"attempts":247,"same_week":248,"maker_shows":33,"maker_hidden":276,"reader_version":277,"card":278},"7858828","Silk","A profiling tool for Django","title","Show HN: Silk, a profiling tool for Django","http:\u002F\u002Fmtford.co.uk\u002Fblog\u002F2\u002F","mtford.co.uk","mtford",1402071837,2014,113,24,248,2272,11,"notable","dev_tools","profiler","library",[24,25,26,27],"django profiler","django performance","sql profiling","request profiling","curious",0.107,{"positive":31,"neutral":32,"mixed":31,"critical":33},2,6,1,{"privacy":35,"performance":37,"idea":38,"execution":39,"docs":40},{"positive":36,"critical":33},0,{"positive":36,"critical":36},{"positive":33,"critical":36},{"positive":36,"critical":36},{"positive":36,"critical":36},[33,36,42,42,36,43,36,36,42,42,36,36,36,42,36,42,36,36,42,36,36,42,36,43],3,5,null,{"problem":46,"audience":57,"pricing":44,"motivation":64,"time_to_build":44,"stack":68,"openness":83,"stage":84,"team_size":84},{"value":47,"source":48,"evidence":49},"Profiling Django request and SQL performance, with history across multiple requests","maker",[50,53],{"id":51,"by":11,"text":52},"7859826","Yep django-toolbar is great! My aim with this was, like you said, to provide the history of multiple requests, but also to provide finer-grained profiling with the decorator and…",{"id":54,"by":55,"text":56},"7859400","numlocked","Looks very interesting! We currently use django debug toolbar for profiling, which seems to have a lot of overlap. I like how Silk stores the profiles of multiple requests - that…",{"value":58,"source":59,"evidence":60},"Django developers","inferred",[61,63],{"id":62},"post",{"id":54,"by":55,"text":56},{"value":65,"source":48,"evidence":66},"Provide history of multiple requests plus finer-grained profiling with decorator and context manager",[67],{"id":51,"by":11,"text":52},[69,79],{"value":70,"source":59,"evidence":71},"Python",[72,75],{"id":73,"by":11,"text":74},"7860152","Sure just added this to the intro. You can download via https:\u002F\u002Fgithub.com\u002Fmtford90\u002Fsilk\u002Freleases or install through pip install django-silk",{"id":76,"by":77,"text":78},"7860269","SEJeff","What is the overhead (roughly) for this guy? I do absolutely love the idea of using elasticsearch for this instead of a traditional database. Using celery or django-rq to delay…",{"value":80,"source":48,"evidence":81},"Django",[82],{"id":62},"open_source","unknown",{"praise":86,"objections":103,"requests":121,"questions":137,"alternatives":149},[87,96],{"value":88,"source":89,"evidence":90},"Useful multi-request profile history","commenter",[91,92],{"id":54,"by":55,"text":56},{"id":93,"by":94,"text":95},"7864380","iamwithnail","This is a really great tool, massive fan, made some good use of it in the ~15 hours since I installed it yesterday evening. Are you aware it seems to bork the admin interface?…",{"value":97,"source":89,"evidence":98},"Better than hotshot and a nice differentiator",[99],{"id":100,"by":101,"text":102},"7859190","Kaedon","Very cool, this seems much nicer than using hotshot to profile Django. I'm a little confused by this page though: http:\u002F\u002Fmtford.co.uk\u002Fsilk\u002Frequest\u002F1907\u002Fprofiling\u002F. Why is…",[104,110,117],{"value":105,"source":48,"evidence":106},"Profiling overhead is high; stores a record for every SQL query",[107],{"id":108,"by":11,"text":109},"7860379","Tbh, probably fairly bad atm. I haven't done anything empirical but atm Silk will create a record for every SQL query executed during the request\u002Fresponse cycle effectively…",{"value":111,"source":89,"evidence":112},"Exposed instance leaked secrets via arbitrary file reads",[113],{"id":114,"by":115,"text":116},"7861619","severb","Probably not a good idea to keep your profiler open to the world as long as you allow reading from arbitrary files. After a bit of fiddling around I was able to read your secret…",{"value":118,"source":89,"evidence":119},"Breaks Django admin with request body read error",[120],{"id":93,"by":94,"text":95},[122,130],{"value":123,"source":89,"evidence":124},"Use Elasticsearch or a monitoring-style backend instead of a database",[125,129],{"id":126,"by":127,"text":128},"7859891","timc3","Looks really nice. Have you thought that instead of sending the results to elasticsearch? Instead of using something like newrelic this could take it's place..",{"id":76,"by":77,"text":78},{"value":131,"source":89,"evidence":132},"Add a download link",[133],{"id":134,"by":135,"text":136},"7859921","philipn","Thanks for posting this! Could you add a download link somewhere?",[138,145],{"value":139,"source":89,"evidence":140},"Can the decorator or context manager profile code outside request cycle",[141],{"id":142,"by":143,"text":144},"7859208","notdonspaulding","After reading through this intro, it isn't clear to me if I can use the decorator or context manager to profile code outside the request\u002Fresponse cycle. Any ideas if that's the…",{"value":146,"source":89,"evidence":147},"Why wrapped_target repeats in profile output",[148],{"id":100,"by":101,"text":102},[150,154,158,168],{"value":151,"source":89,"evidence":152},"django-debug-toolbar",[153],{"id":54,"by":55,"text":56},{"value":155,"source":89,"evidence":156},"New Relic",[157],{"id":126,"by":127,"text":128},{"value":159,"source":89,"evidence":160},"AppEnlight",[161,165],{"id":162,"by":163,"text":164},"7860734","ergo14","If you are looking for something like newrelic you might want to give https:\u002F\u002Fappenlight.com a try. I've put a lot of love into it and it can give you tons of information about…",{"id":166,"by":163,"text":167},"7860707","For people interested in production monitoring I've created https:\u002F\u002Fappenlight.com - and our python middleware will integrate and start timing django applications without any…",{"value":169,"source":89,"evidence":170},"django-sql-inspector",[171,175],{"id":172,"by":173,"text":174},"7861592","rmc","> I like how Silk stores the profiles of multiple requests You might like my Django SQL Inspector which aggregates many SQL queries across many requests.…",{"id":176,"by":173,"text":177},"7860170","I wrote https:\u002F\u002Fgithub.com\u002Frory\u002Fdjango-sql-inspector a django app to profile SQL queries done in multiple pages, including showing stack trace of where it's being called. You can…",{"comments":179,"answered":32,"key":180},8,[181,184,187],{"id":182,"text":183},"7861633","Nice... I did make an attempt to filter out sensitive stuff but clearly did a bad job. Thanks for letting me know. I will eventually introduce a demo app rather than my own site.",{"id":185,"text":186},"7859219","Thats a great question... that def shouldn't be there. render_to_response is actually dynamically profiled i.e. the decorator is applied at runtime via configuration in…",{"id":51,"text":52},{"commenters":189,"max_depth":43,"maker_replies":179,"first_comment_mins":190,"lifespan_hours":191},13,62,42,[193,195,197,199,201,203,205,207,209,211,214,216,217,218,220,222,225,228,230,232,235,237,240,242],[114,36,33,194,115,36],"project\u002Fcritical\u002Fprivacy",[182,36,36,196,11,33],"maker\u002Fneutral\u002Fprivacy",[198,36,42,196,115,36],"7861639",[100,33,42,200,101,36],"project\u002Fmixed\u002Fperformance",[185,33,36,202,11,33],"maker\u002Fneutral\u002Fexecution",[54,31,43,204,55,36],"project\u002Fpositive\u002Fidea",[51,31,36,206,11,33],"maker\u002Fneutral\u002Fidea",[172,31,36,208,173,36],"other\u002Fneutral\u002Fnone",[93,42,42,210,94,36],"project\u002Fmixed\u002Fexecution",[126,212,42,213,127,36],4,"project\u002Fneutral\u002Fidea",[215,212,36,213,11,33],"7860185",[162,212,36,208,163,36],[176,43,36,208,173,36],[76,32,42,219,77,36],"project\u002Fneutral\u002Fperformance",[108,32,36,221,11,33],"project\u002Fcritical\u002Fperformance",[223,32,42,219,224,36],"7860509","opendais",[226,32,36,227,11,33],"7860541","maker\u002Fneutral\u002Fnone",[229,32,36,208,224,36],"7861194",[142,231,42,213,143,36],7,[233,231,36,234,11,33],"7859258","project\u002Fneutral\u002Fexecution",[166,179,36,236,163,36],"other\u002Fpositive\u002Fnone",[134,238,42,239,135,36],9,"project\u002Fneutral\u002Fdocs",[73,238,36,241,11,33],"maker\u002Fneutral\u002Fdocs",[243,244,43,245,246,36],"7859278",10,"project\u002Fpositive\u002Fnone","spanasik",[],[249,254,258,262,267,272],{"id":250,"name":251,"points":252,"category":253},"7862578","json_resume",187,"productivity",{"id":255,"name":256,"points":257,"category":20},"7868368","Bounce.js",172,{"id":259,"name":260,"points":261,"category":20},"7858296","GoNative",148,{"id":263,"name":264,"points":265,"category":266},"7868211","visited-captcha-history",140,"security_privacy",{"id":268,"name":269,"points":270,"category":271},"7869726","Front",94,"web_saas",{"id":273,"name":274,"points":275,"category":20},"7872113","Go HTTP Router Benchmark",89,false,"v2",{"id":279,"name":5,"line":6,"ai":276,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":280,"top":18,"kw":281,"maker":11,"domain":10,"tier":19,"attempts":36,"strip":282,"url":9,"mix":283,"praise":88,"objection":105,"sub":21},7858828,0.11,[24,25,26,27],"103305003300030300300305",[31,32,31,33],1794036518786]