[{"data":1,"prerenderedAt":396},["ShallowReactive",2],{"project-43228333":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":35,"aspects":36,"strip":44,"post_text":46,"what":47,"said":85,"maker_in_thread":203,"shape":211,"grid":215,"attempts":355,"same_week":356,"maker_shows":387,"maker_hidden":388,"reader_version":389,"card":390},"43228333","Robyn","“Batman Inspired” Python Web Framework Built with Rust","title","Show HN: Robyn – “Batman Inspired” Python Web Framework Built with Rust","https:\u002F\u002Frobyn.tech\u002F","robyn.tech","vednig",1740902166,2025,77,58,927,3837,25,"notable","languages","python web framework","library",[21,24,25,26,27],"rust","async python","websocket","fastapi alternative","curious",-0.304,{"positive":31,"neutral":32,"mixed":33,"critical":34},1,18,0,15,34,{"design":37,"execution":39,"performance":41,"idea":42},{"positive":33,"critical":38},2,{"positive":33,"critical":40},4,{"positive":33,"critical":40},{"positive":31,"critical":43},5,[45,45,45,31,31,31,45,33,45,31,31,45,33,45,45,31,31,33,33,45,31,31,31,33,31,31,45,33,45,33,33,45,45,33,33,31,45,33,31,33],3,null,{"problem":48,"audience":46,"pricing":46,"motivation":46,"time_to_build":46,"stack":58,"openness":83,"stage":84,"team_size":84},{"value":49,"source":50,"evidence":51},"Faster Python web serving with built-in features","maker",[52,55],{"id":53,"by":11,"text":54},"43229350","Especially over Flask and Django, Robyn additionally offers integrated websocket support along with many existing features like templating, logging etc.[1] Developer has been…",{"id":56,"by":11,"text":57},"43229524","it's much faster for development and prototyping to production, because: - doesn't require any external ASGI in Prod - has in-built CORS - Rust runtime in my opinion",[59,67,75],{"value":60,"source":50,"evidence":61},"Python",[62,66],{"id":63,"by":64,"text":65},"43229933","scosman","Can someone explain how it works under the hood. A Rust server for python obviously needs to still run the python interpreter. Is it running many instances to get around the GIL,…",{"id":56,"by":11,"text":57},{"value":68,"source":50,"evidence":69},"Rust",[70,71],{"id":56,"by":11,"text":57},{"id":72,"by":73,"text":74},"43230382","Kwpolska","There’s native modules to speed up hot paths, and there’s writing 29% [0] of your framework in Rust, entirely sidestepping interoperability standards, like ASGI. [0]…",{"value":76,"source":77,"evidence":78},"PyO3","commenter",[79],{"id":80,"by":81,"text":82},"43233148","gdcbe","https:\u002F\u002Fpyo3.rs\u002F","open_source","unknown",{"praise":86,"objections":91,"requests":138,"questions":146,"alternatives":165},[87],{"value":88,"source":50,"evidence":89},"Built-in websocket support and features like templating and logging",[90],{"id":53,"by":11,"text":54},[92,98,112,127],{"value":93,"source":77,"evidence":94},"Speed claims rely on constant-response benchmark optimization",[95],{"id":96,"by":73,"text":97},"43230353","Is it really going to be faster? In the benchmark they cited in the README [0], they are in 10th place among Python frameworks. This is not a real-life benchmark, as it merely…",{"value":99,"source":77,"evidence":100},"Rust adds little benefit for Python developers and fragments the ecosystem",[101,105,109],{"id":102,"by":103,"text":104},"43264495","solarkraft","Since I do not program in Rust, I do not see how it brings any advantage for development.",{"id":106,"by":107,"text":108},"43231927","skeledrew","The problem with all this combining is that it's making apps less portable. Like I want to make apps that work on desktop+mobile with flet[0], but now I have to specifically seek…",{"id":110,"by":107,"text":111},"43232664","The use case isn't that narrow though. Just the flet project has 12.5k GH stars (which I would say represents significant adoption), and I'll wager there are other projects out…",{"value":113,"source":77,"evidence":114},"Sync database calls in async handlers would block the event loop",[115,119,123],{"id":116,"by":117,"text":118},"43229231","wesselbindt","I'm confused, in the example application I see all these async endpoints interacting with the database, but the function bodies are entirely sync. Wouldn't this block the event…",{"id":120,"by":121,"text":122},"43232487","whilenot-dev","To GP: yes, it would block the event loop and that's pretty bad. But... asyncio.to_thread[0] as a quick workaround, just keep track of your thread count. Obviously frameworks and…",{"id":124,"by":125,"text":126},"43238829","odie5533","It looks like the author is mistakenly using the sync versions of SQLAlchemy calls. Unless it's on purpose. Either way, not a good sign.",{"value":128,"source":77,"evidence":129},"Not comparable to Django",[130,134],{"id":131,"by":132,"text":133},"43229764","7bit","You can't compare this to Django at all.",{"id":135,"by":136,"text":137},"43229709","the__alchemist","It looks similar in concept to Flask and Fast API (Likely with a speed advantage), and duplicating their features it feasible. It is not comparable to Django.",[139],{"value":140,"source":77,"evidence":141},"Clearer comparison with Granian and other servers",[142],{"id":143,"by":144,"text":145},"43229363","polotics","would be nice to know from the author how this compares to granian",[147,151,158],{"value":148,"source":77,"evidence":149},"How it works under the hood with the GIL",[150],{"id":63,"by":64,"text":65},{"value":152,"source":77,"evidence":153},"What it offers over Django, Flask, or FastAPI",[154],{"id":155,"by":156,"text":157},"43229009","benrutter","It looks like a nice design! I'd love to hear a bit more about what it offers over Django\u002FFlask\u002FFastAPI though! The examples look very similar to Fast API and the requests per…",{"value":159,"source":77,"evidence":160},"Which part is Batman inspired",[161],{"id":162,"by":163,"text":164},"43229028","ddanieltan","which part of this framework is Batman inspired?",[166,173,181,189,197],{"value":167,"source":77,"evidence":168},"FastAPI",[169,170],{"id":155,"by":156,"text":157},{"id":171,"by":125,"text":172},"43238858","- FastAPI doesn't require any external ASGI in prod either ever since they added the fastapi cli. - FastAPI has built-in CORS. Has for years. I don't remember it ever not having.…",{"value":174,"source":77,"evidence":175},"Flask",[176,180],{"id":177,"by":178,"text":179},"43230456","BiteCode_dev","Why do all those micro framework copy the worst aspects of flask? The global request object, the bad integration with sqlalchemy, the strong coupling with an application object…",{"id":135,"by":136,"text":137},{"value":182,"source":77,"evidence":183},"Granian",[184,185],{"id":143,"by":144,"text":145},{"id":186,"by":187,"text":188},"43261803","gi0baro-dev","Granian maintainer here. Can't speak for Robyn author, but in my opinion it's not a valid comparison. The only thing Granian and Robyn have in common is the usage of Rust and…",{"value":190,"source":77,"evidence":191},"Starlette, Litestar, Sanic",[192,193],{"id":186,"by":187,"text":188},{"id":194,"by":195,"text":196},"43229060","linwangg","The biggest differentiator between Robyn and frameworks like FastAPI or Sanic seems to be the Rust runtime. But is Python's async actually the bottleneck that Rust is solving here?",{"value":198,"source":50,"evidence":199},"Go frameworks such as Gin",[200],{"id":201,"by":11,"text":202},"43229502","golang has frameworks like gin that are faster and simpler when building barebones apps, the more features you need the more modules increase. Robyn brings all the features out…",{"comments":204,"answered":43,"key":205},8,[206,209,210],{"id":207,"text":208},"43229410","Based on my experience. At some places where there were no better alternatives, framework utilizes sync functions under the hood, such as some databases. Overall there are also…",{"id":53,"text":54},{"id":56,"text":57},{"commenters":212,"max_depth":43,"maker_replies":204,"first_comment_mins":213,"lifespan_hours":214},39,108,73,[216,218,219,221,223,225,229,230,233,237,239,241,244,246,248,249,250,251,254,255,256,259,261,263,266,269,272,275,278,281,283,285,286,290,292,295,296,299,303,306,308,311,313,316,318,321,324,326,328,331,333,336,339,342,344,347,349,353],[63,33,45,217,64,33],"project\u002Fneutral\u002Fdesign",[80,33,45,217,81,33],[116,31,45,220,117,33],"project\u002Fneutral\u002Fexecution",[207,31,33,222,11,31],"maker\u002Fneutral\u002Fexecution",[120,31,31,224,121,33],"project\u002Fcritical\u002Fexecution",[226,31,45,227,228,33],"43230043","project\u002Fneutral\u002Fperformance","Retr0id",[124,31,31,224,125,33],[231,31,31,232,117,33],"43240114","maker\u002Fcritical\u002Fexecution",[234,31,33,235,236,33],"43241692","commenter\u002Fneutral\u002Fperformance","anentropic",[155,38,45,238,156,33],"project\u002Fneutral\u002Fidea",[53,38,33,240,11,31],"maker\u002Fpositive\u002Fidea",[242,38,45,227,243,33],"43229404","eterps",[56,38,33,245,11,31],"project\u002Fpositive\u002Fidea",[171,38,31,247,125,33],"project\u002Fcritical\u002Fidea",[102,38,31,247,103,33],[131,38,45,238,132,33],[143,38,45,227,144,33],[252,38,33,253,11,31],"43229478","maker\u002Fneutral\u002Fperformance",[186,38,45,238,187,33],[135,38,45,238,136,33],[257,45,45,217,258,33],"43229040","xandrius",[201,45,33,260,11,31],"maker\u002Fneutral\u002Fidea",[177,40,31,262,178,33],"project\u002Fcritical\u002Fdesign",[264,43,31,224,265,33],"43237813","yntkts",[162,267,33,268,163,33],6,"other\u002Fneutral\u002Fnone",[270,267,33,268,271,33],"43229147","yesbut",[273,267,33,268,274,33],"43229304","blitzar",[276,277,31,247,73,33],"43230156",7,[279,277,43,245,280,33],"43230205","robmsmt",[96,277,31,282,73,33],"project\u002Fcritical\u002Fperformance",[284,277,31,282,280,33],"43231083",[106,277,31,247,107,33],[287,277,33,288,289,33],"43232298","commenter\u002Fneutral\u002Fnone","djl0",[110,277,33,291,107,33],"commenter\u002Fcritical\u002Fidea",[293,277,45,238,294,33],"43230249","afavour",[72,277,31,247,73,33],[297,277,31,262,298,33],"43230964","surajrmal",[300,204,45,301,302,33],"43228875","project\u002Fneutral\u002Fnone","glutamate",[304,204,45,301,305,33],"43228882","yedpodtrzitko",[307,204,33,268,302,33],"43228903",[309,204,45,301,310,33],"43228974","card_zero",[312,204,33,268,274,33],"43228960",[314,204,33,268,315,33],"43229175","Comma2976",[317,204,33,268,274,33],"43229284",[319,204,33,268,320,33],"43229300","pavlov",[322,204,45,301,323,33],"43229032","Swinx43",[194,325,45,227,195,33],9,[327,325,33,227,11,31],"43229365",[329,325,33,330,73,33],"43230220","other\u002Fneutral\u002Fperformance",[332,325,33,227,11,31],"43230428",[334,325,33,288,335,33],"43231203","mont_tag",[337,325,31,282,338,33],"43229948","bvrmn",[340,325,45,227,341,33],"43230336","michaelcampbell",[343,325,33,235,338,33],"43239213",[345,325,33,330,346,33],"43232199","rybosome",[348,325,31,282,125,33],"43238866",[350,351,33,268,352,33],"43229756",10,"EfficientDude",[354,351,33,268,11,31],"43229816",[],[357,362,367,372,377,382],{"id":358,"name":359,"points":360,"category":361},"43255529","Bayleaf",735,"hardware",{"id":363,"name":364,"points":365,"category":366},"43223718","Berlin Swapfest",308,"web_saas",{"id":368,"name":369,"points":370,"category":371},"43230994","Kaguya",254,"productivity",{"id":373,"name":374,"points":375,"category":376},"43243893","Agents.json",212,"ai",{"id":378,"name":379,"points":380,"category":381},"43242818","Foudinge",201,"data",{"id":383,"name":384,"points":385,"category":386},"43196374","Superglue",198,"infrastructure",11,false,"v2",{"id":391,"name":5,"line":6,"ai":388,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":392,"top":18,"kw":393,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":394,"url":9,"mix":395,"praise":88,"objection":93,"sub":21},43228333,-0.3,[21,24,25,26,27],"3331113031130331100311101130300330013010",[31,32,33,34],1794036670550]