[{"data":1,"prerenderedAt":573},["ShallowReactive",2],{"versions":3,"plugin-litestar-granian":6,"readme-litestar-granian":47},{"v3":4,"v4":5},"3.21.10","4.5.1",{"id":7,"title":8,"body":9,"category":10,"changelog":11,"compatibility":12,"created_at":14,"description":15,"documentation":16,"extension":17,"github":16,"icon":18,"issues":19,"key":20,"latest_version":21,"license":9,"maintainers":22,"meta":27,"monthly_downloads":28,"name":8,"navigation":29,"path":30,"pypi":20,"python_compatibility":31,"python_compatibility_raw":32,"repo":39,"seo":40,"sponsor":41,"stars":42,"stem":43,"type":44,"updated_at":45,"website":16,"__hash__":46},"plugins\u002Fplugins\u002Flitestar-granian.yml","Litestar Granian",null,"Deployment","https:\u002F\u002Fcofin.github.io\u002Flitesatr-granian\u002Flatest\u002Fchangelog",{"litestar":13},">=2.15.0","2023-10-02T01:42:04","Granian plugin for Litestar","https:\u002F\u002Fgithub.com\u002Fcofin\u002Flitestar-granian","yml","litestar-granian.png","https:\u002F\u002Fgithub.com\u002Fcofin\u002Flitestar-granian\u002Fissues\u002F","litestar-granian","0.15.0",[23],{"name":24,"github":25,"avatar":26},"Cody Fincher","cofin","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F204685?v=4",{},23404,true,"\u002Fplugins\u002Flitestar-granian",{"raw":32,"specifier_set":32,"compatible":33},">=3.10",[34,35,36,37,38],"3.10","3.11","3.12","3.13","3.14","cofin\u002Flitestar-granian",{"description":15},false,44,"plugins\u002Flitestar-granian","official","2026-07-25T02:21:57","4lpfe2TCtpVx57k3UiOXY8ApLbrOslPDMR-BzxGkDKw",{"id":48,"extension":49,"meta":50,"stem":571,"__hash__":572},"readme\u002Freadmes\u002Flitestar-granian.md","md",{"body":51},{"type":52,"value":53,"toc":563},"minimark",[54,58,63,95,99,106,299,302,321,331,344,347,375,382,386,403,407,417,420,439,506,510,546,550,559],[55,56,57],"p",{},"Run Litestar applications with Granian while preserving Litestar startup,\nshutdown, logging, and server integrations.",[59,60,62],"h2",{"id":61},"install","Install",[64,65,70],"pre",{"className":66,"code":67,"language":68,"meta":69,"style":69},"language-shell shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","python -m pip install litestar-granian\n","shell","",[71,72,73],"code",{"__ignoreMap":69},[74,75,78,82,86,89,92],"span",{"class":76,"line":77},"line",1,[74,79,81],{"class":80},"s52Pk","python",[74,83,85],{"class":84},"sGFVr"," -m",[74,87,88],{"class":84}," pip",[74,90,91],{"class":84}," install",[74,93,94],{"class":84}," litestar-granian\n",[59,96,98],{"id":97},"run-your-first-app","Run your first app",[55,100,101,102,105],{},"Save this as ",[71,103,104],{},"example.py",":",[64,107,110],{"className":108,"code":109,"language":81,"meta":69,"style":69},"language-python shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","from litestar import Litestar, get\n\nfrom litestar_granian import GranianPlugin\n\n\n@get(\"\u002F\")\nasync def hello() -> dict[str, str]:\n    return {\"hello\": \"world\"}\n\n\napp = Litestar(route_handlers=[hello], plugins=[GranianPlugin()])\n",[71,111,112,135,141,154,159,164,188,224,253,258,263],{"__ignoreMap":69},[74,113,114,118,122,125,128,132],{"class":76,"line":77},[74,115,117],{"class":116},"s8R28","from",[74,119,121],{"class":120},"sZSNi"," litestar ",[74,123,124],{"class":116},"import",[74,126,127],{"class":120}," Litestar",[74,129,131],{"class":130},"sDfIl",",",[74,133,134],{"class":120}," get\n",[74,136,138],{"class":76,"line":137},2,[74,139,140],{"emptyLinePlaceholder":29},"\n",[74,142,144,146,149,151],{"class":76,"line":143},3,[74,145,117],{"class":116},[74,147,148],{"class":120}," litestar_granian ",[74,150,124],{"class":116},[74,152,153],{"class":120}," GranianPlugin\n",[74,155,157],{"class":76,"line":156},4,[74,158,140],{"emptyLinePlaceholder":29},[74,160,162],{"class":76,"line":161},5,[74,163,140],{"emptyLinePlaceholder":29},[74,165,167,170,174,177,180,183,185],{"class":76,"line":166},6,[74,168,169],{"class":130},"@",[74,171,173],{"class":172},"s3cPz","get",[74,175,176],{"class":130},"(",[74,178,179],{"class":130},"\"",[74,181,182],{"class":84},"\u002F",[74,184,179],{"class":130},[74,186,187],{"class":130},")\n",[74,189,191,195,198,201,204,207,210,213,216,218,221],{"class":76,"line":190},7,[74,192,194],{"class":193},"smZ93","async",[74,196,197],{"class":193}," def",[74,199,200],{"class":172}," hello",[74,202,203],{"class":130},"()",[74,205,206],{"class":130}," ->",[74,208,209],{"class":120}," dict",[74,211,212],{"class":130},"[",[74,214,215],{"class":80},"str",[74,217,131],{"class":130},[74,219,220],{"class":80}," str",[74,222,223],{"class":130},"]:\n",[74,225,227,230,233,235,238,240,242,245,248,250],{"class":76,"line":226},8,[74,228,229],{"class":116},"    return",[74,231,232],{"class":130}," {",[74,234,179],{"class":130},[74,236,237],{"class":84},"hello",[74,239,179],{"class":130},[74,241,105],{"class":130},[74,243,244],{"class":130}," \"",[74,246,247],{"class":84},"world",[74,249,179],{"class":130},[74,251,252],{"class":130},"}\n",[74,254,256],{"class":76,"line":255},9,[74,257,140],{"emptyLinePlaceholder":29},[74,259,261],{"class":76,"line":260},10,[74,262,140],{"emptyLinePlaceholder":29},[74,264,266,269,272,274,276,280,283,285,288,291,293,296],{"class":76,"line":265},11,[74,267,268],{"class":120},"app ",[74,270,271],{"class":130},"=",[74,273,127],{"class":172},[74,275,176],{"class":130},[74,277,279],{"class":278},"s1nJG","route_handlers",[74,281,282],{"class":130},"=[",[74,284,237],{"class":172},[74,286,287],{"class":130},"],",[74,289,290],{"class":278}," plugins",[74,292,282],{"class":130},[74,294,295],{"class":172},"GranianPlugin",[74,297,298],{"class":130},"()])\n",[55,300,301],{},"Start the server:",[64,303,305],{"className":66,"code":304,"language":68,"meta":69,"style":69},"litestar --app example:app run\n",[71,306,307],{"__ignoreMap":69},[74,308,309,312,315,318],{"class":76,"line":77},[74,310,311],{"class":80},"litestar",[74,313,314],{"class":84}," --app",[74,316,317],{"class":84}," example:app",[74,319,320],{"class":84}," run\n",[55,322,323,324,330],{},"Open ",[325,326,327],"a",{"href":327,"rel":328},"http:\u002F\u002F127.0.0.1:8000\u002F",[329],"nofollow"," in a browser, or run:",[64,332,334],{"className":66,"code":333,"language":68,"meta":69,"style":69},"curl http:\u002F\u002F127.0.0.1:8000\u002F\n",[71,335,336],{"__ignoreMap":69},[74,337,338,341],{"class":76,"line":77},[74,339,340],{"class":80},"curl",[74,342,343],{"class":84}," http:\u002F\u002F127.0.0.1:8000\u002F\n",[55,345,346],{},"You should receive:",[64,348,352],{"className":349,"code":350,"language":351,"meta":69,"style":69},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\"hello\":\"world\"}\n","json",[71,353,354],{"__ignoreMap":69},[74,355,356,359,361,363,365,367,369,371,373],{"class":76,"line":77},[74,357,358],{"class":130},"{",[74,360,179],{"class":130},[74,362,237],{"class":193},[74,364,179],{"class":130},[74,366,105],{"class":130},[74,368,179],{"class":130},[74,370,247],{"class":84},[74,372,179],{"class":130},[74,374,252],{"class":130},[55,376,377,378,381],{},"Press ",[71,379,380],{},"Ctrl+C"," in the server terminal to stop it.",[59,383,385],{"id":384},"why-use-this-plugin","Why use this plugin?",[387,388,389,397,400],"ul",{},[390,391,392,393,396],"li",{},"Keep the familiar ",[71,394,395],{},"litestar run"," command while using Granian.",[390,398,399],{},"Start Litestar server integrations once around all Granian workers.",[390,401,402],{},"Configure workers, protocols, logging, metrics, and static files from one CLI.",[59,404,406],{"id":405},"what-the-plugin-changes","What the plugin changes",[55,408,409,412,413,416],{},[71,410,411],{},"GranianPlugin()"," replaces Litestar's standard ",[71,414,415],{},"run"," command with a\nGranian-backed command. It does not change commands that start another ASGI\nserver directly.",[55,418,419],{},"Run the complete command reference with:",[64,421,423],{"className":66,"code":422,"language":68,"meta":69,"style":69},"litestar --app example:app run --help\n",[71,424,425],{"__ignoreMap":69},[74,426,427,429,431,433,436],{"class":76,"line":77},[74,428,311],{"class":80},[74,430,314],{"class":84},[74,432,317],{"class":84},[74,434,435],{"class":84}," run",[74,437,438],{"class":84}," --help\n",[440,441,442,446,449,488],"details",{},[443,444,445],"summary",{},"Optional event loops",[55,447,448],{},"The default installation uses Granian's standard loop selection and installs\nno optional event loop. Install and select one integration at a time:",[64,450,452],{"className":66,"code":451,"language":68,"meta":69,"style":69},"python -m pip install \"litestar-granian[uvloop]\"\nlitestar --app example:app run --loop uvloop\n",[71,453,454,472],{"__ignoreMap":69},[74,455,456,458,460,462,464,466,469],{"class":76,"line":77},[74,457,81],{"class":80},[74,459,85],{"class":84},[74,461,88],{"class":84},[74,463,91],{"class":84},[74,465,244],{"class":130},[74,467,468],{"class":84},"litestar-granian[uvloop]",[74,470,471],{"class":130},"\"\n",[74,473,474,476,478,480,482,485],{"class":76,"line":137},[74,475,311],{"class":80},[74,477,314],{"class":84},[74,479,317],{"class":84},[74,481,435],{"class":84},[74,483,484],{"class":84}," --loop",[74,486,487],{"class":84}," uvloop\n",[55,489,490,491,494,495,498,499,494,502,505],{},"On supported platforms, use the matching ",[71,492,493],{},"rloop"," or ",[71,496,497],{},"winloop"," extra and pass\n",[71,500,501],{},"--loop rloop",[71,503,504],{},"--loop winloop",".",[59,507,509],{"id":508},"next-steps","Next steps",[387,511,512,519,526,533,539],{},[390,513,514,518],{},[325,515,517],{"href":516},"docs\u002Fgetting-started\u002Fquickstart.rst","Quickstart"," — repeat the first run and\nlearn what to check.",[390,520,521,525],{},[325,522,524],{"href":523},"docs\u002Fguides\u002Fconfiguration.rst","Configuration"," — choose bindings, workers,\nprotocols, TLS, reload, and event loops.",[390,527,528,532],{},[325,529,531],{"href":530},"docs\u002Fguides\u002Flogging-and-metrics.rst","Logging and metrics"," — see how Granian\nautomatically matches Litestar's formatter or accepts a complete override.",[390,534,535,538],{},[325,536,10],{"href":537},"docs\u002Fguides\u002Fdeployment.rst"," — forward signals and verify clean\nshutdown.",[390,540,541,545],{},[325,542,544],{"href":543},"docs\u002Freference\u002Fcli.rst","CLI reference"," — browse every option and environment\nvariable.",[59,547,549],{"id":548},"license","License",[55,551,552,554,555,505],{},[71,553,20],{}," is distributed under the ",[325,556,558],{"href":557},"LICENSE","MIT License",[560,561,562],"style",{},"html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .s1nJG, html code.shiki .s1nJG{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":69,"searchDepth":137,"depth":137,"links":564},[565,566,567,568,569,570],{"id":61,"depth":137,"text":62},{"id":97,"depth":137,"text":98},{"id":384,"depth":137,"text":385},{"id":405,"depth":137,"text":406},{"id":508,"depth":137,"text":509},{"id":548,"depth":137,"text":549},"readmes\u002Flitestar-granian","u89K9lryZ4EnBI78L8AQRnLHPbfdV1mbhaADT_ZS8CQ",1785155663549]