[{"data":1,"prerenderedAt":753},["ShallowReactive",2],{"versions":3,"plugin-litestar-queues":6,"readme-litestar-queues":48},{"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":18,"icon":19,"issues":20,"key":21,"latest_version":22,"license":9,"maintainers":23,"meta":28,"monthly_downloads":29,"name":8,"navigation":30,"path":31,"pypi":21,"python_compatibility":32,"python_compatibility_raw":33,"repo":40,"seo":41,"sponsor":42,"stars":43,"stem":44,"type":45,"updated_at":46,"website":16,"__hash__":47},"plugins\u002Fplugins\u002Flitestar-queues.yml","Litestar Queues",null,"Background Processing","https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002Fchangelog",{"litestar":13},">=2.24.0","2026-06-29T20:51:10","Task queues, workers, schedules, and backend integrations for Litestar","https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002F","yml","https:\u002F\u002Fgithub.com\u002Fcofin\u002Flitestar-queues","litestar-queues.svg","https:\u002F\u002Fgithub.com\u002Fcofin\u002Flitestar-queues\u002Fissues\u002F","litestar-queues","0.6.0",[24],{"name":25,"github":26,"avatar":27},"Cody Fincher","cofin","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F204685?v=4",{},972,true,"\u002Fplugins\u002Flitestar-queues",{"raw":33,"specifier_set":33,"compatible":34},">=3.10",[35,36,37,38,39],"3.10","3.11","3.12","3.13","3.14","cofin\u002Flitestar-queues",{"description":15},false,6,"plugins\u002Flitestar-queues","official","2026-07-25T18:03:42","mIsZ5uTCb8wk4v81hZVn2dAJj39pnWgFF__nG5NTNr4",{"id":49,"extension":50,"meta":51,"stem":751,"__hash__":752},"readme\u002Freadmes\u002Flitestar-queues.md","md",{"body":52},{"type":53,"value":54,"toc":746},"minimark",[55,99,102,107,110,136,143,631,634,657,660,679,682,686,689,693,739,742],[56,57,58,69,76,84,92],"p",{},[59,60,64],"a",{"href":61,"rel":62},"https:\u002F\u002Fpypi.org\u002Fproject\u002Flitestar-queues\u002F",[63],"nofollow",[65,66],"img",{"alt":67,"src":68},"PyPI","https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Flitestar-queues",[59,70,72],{"href":61,"rel":71},[63],[65,73],{"alt":74,"src":75},"Python","https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Flitestar-queues",[59,77,80],{"href":78,"rel":79},"https:\u002F\u002Fgithub.com\u002Fcofin\u002Flitestar-queues\u002Fblob\u002Fmain\u002FLICENSE",[63],[65,81],{"alt":82,"src":83},"License","https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Flitestar-queues",[59,85,88],{"href":86,"rel":87},"https:\u002F\u002Fgithub.com\u002Fcofin\u002Flitestar-queues\u002Factions\u002Fworkflows\u002Fci.yml",[63],[65,89],{"alt":90,"src":91},"CI","https:\u002F\u002Fgithub.com\u002Fcofin\u002Flitestar-queues\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg",[59,93,95],{"href":16,"rel":94},[63],[65,96],{"alt":97,"src":98},"Docs","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-cofin.github.io-blue",[56,100,101],{},"Litestar Queues lets a Litestar application persist work, run it in a worker,\nand inspect the result. Use it for work that should outlive the request that\nstarted it: sending email, importing files, refreshing reports, or calling a\nslow service.",[103,104,106],"h2",{"id":105},"quickstart","Quickstart",[56,108,109],{},"Install the package:",[111,112,117],"pre",{"className":113,"code":114,"language":115,"meta":116,"style":116},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","pip install litestar-queues\n","bash","",[118,119,120],"code",{"__ignoreMap":116},[121,122,125,129,133],"span",{"class":123,"line":124},"line",1,[121,126,128],{"class":127},"s52Pk","pip",[121,130,132],{"class":131},"sGFVr"," install",[121,134,135],{"class":131}," litestar-queues\n",[56,137,138,139,142],{},"Create ",[118,140,141],{},"app.py",":",[111,144,148],{"className":145,"code":146,"language":147,"meta":116,"style":116},"language-python shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","from litestar import Litestar, post\nfrom litestar.di import NamedDependency\n\nfrom litestar_queues import QueueConfig, QueuePlugin, QueueService, task\n\n\n@task(\"accounts.sync\", queue=\"accounts\", timeout=30)\nasync def sync_account(account_id: str) -> dict[str, str]:\n    return {\"account_id\": account_id, \"status\": \"synced\"}\n\n\n@post(\"\u002Faccounts\u002F{account_id:str}\u002Fsync\")\nasync def create_sync_job(\n    account_id: str,\n    queue_service: NamedDependency[QueueService],\n) -> dict[str, str]:\n    result = await queue_service.enqueue(sync_account, account_id)\n    return {\"task_id\": str(result.id), \"status\": result.status or \"pending\"}\n\n\napp = Litestar(\n    route_handlers=[create_sync_job],\n    plugins=[QueuePlugin(config=QueueConfig())],\n)\n","python",[118,149,150,173,192,198,226,231,235,286,331,373,378,383,413,426,439,458,477,507,566,571,576,588,602,626],{"__ignoreMap":116},[121,151,152,156,160,163,166,170],{"class":123,"line":124},[121,153,155],{"class":154},"s8R28","from",[121,157,159],{"class":158},"sZSNi"," litestar ",[121,161,162],{"class":154},"import",[121,164,165],{"class":158}," Litestar",[121,167,169],{"class":168},"sDfIl",",",[121,171,172],{"class":158}," post\n",[121,174,176,178,181,184,187,189],{"class":123,"line":175},2,[121,177,155],{"class":154},[121,179,180],{"class":158}," litestar",[121,182,183],{"class":168},".",[121,185,186],{"class":158},"di ",[121,188,162],{"class":154},[121,190,191],{"class":158}," NamedDependency\n",[121,193,195],{"class":123,"line":194},3,[121,196,197],{"emptyLinePlaceholder":30},"\n",[121,199,201,203,206,208,211,213,216,218,221,223],{"class":123,"line":200},4,[121,202,155],{"class":154},[121,204,205],{"class":158}," litestar_queues ",[121,207,162],{"class":154},[121,209,210],{"class":158}," QueueConfig",[121,212,169],{"class":168},[121,214,215],{"class":158}," QueuePlugin",[121,217,169],{"class":168},[121,219,220],{"class":158}," QueueService",[121,222,169],{"class":168},[121,224,225],{"class":158}," task\n",[121,227,229],{"class":123,"line":228},5,[121,230,197],{"emptyLinePlaceholder":30},[121,232,233],{"class":123,"line":43},[121,234,197],{"emptyLinePlaceholder":30},[121,236,238,241,245,248,251,254,256,258,262,265,267,270,272,274,277,279,283],{"class":123,"line":237},7,[121,239,240],{"class":168},"@",[121,242,244],{"class":243},"s3cPz","task",[121,246,247],{"class":168},"(",[121,249,250],{"class":168},"\"",[121,252,253],{"class":131},"accounts.sync",[121,255,250],{"class":168},[121,257,169],{"class":168},[121,259,261],{"class":260},"s1nJG"," queue",[121,263,264],{"class":168},"=",[121,266,250],{"class":168},[121,268,269],{"class":131},"accounts",[121,271,250],{"class":168},[121,273,169],{"class":168},[121,275,276],{"class":260}," timeout",[121,278,264],{"class":168},[121,280,282],{"class":281},"sYRBq","30",[121,284,285],{"class":168},")\n",[121,287,289,293,296,299,301,304,306,309,312,315,318,321,324,326,328],{"class":123,"line":288},8,[121,290,292],{"class":291},"smZ93","async",[121,294,295],{"class":291}," def",[121,297,298],{"class":243}," sync_account",[121,300,247],{"class":168},[121,302,303],{"class":260},"account_id",[121,305,142],{"class":168},[121,307,308],{"class":127}," str",[121,310,311],{"class":168},")",[121,313,314],{"class":168}," ->",[121,316,317],{"class":158}," dict",[121,319,320],{"class":168},"[",[121,322,323],{"class":127},"str",[121,325,169],{"class":168},[121,327,308],{"class":127},[121,329,330],{"class":168},"]:\n",[121,332,334,337,340,342,344,346,348,351,353,356,359,361,363,365,368,370],{"class":123,"line":333},9,[121,335,336],{"class":154},"    return",[121,338,339],{"class":168}," {",[121,341,250],{"class":168},[121,343,303],{"class":131},[121,345,250],{"class":168},[121,347,142],{"class":168},[121,349,350],{"class":158}," account_id",[121,352,169],{"class":168},[121,354,355],{"class":168}," \"",[121,357,358],{"class":131},"status",[121,360,250],{"class":168},[121,362,142],{"class":168},[121,364,355],{"class":168},[121,366,367],{"class":131},"synced",[121,369,250],{"class":168},[121,371,372],{"class":168},"}\n",[121,374,376],{"class":123,"line":375},10,[121,377,197],{"emptyLinePlaceholder":30},[121,379,381],{"class":123,"line":380},11,[121,382,197],{"emptyLinePlaceholder":30},[121,384,386,388,391,393,395,398,401,403,406,409,411],{"class":123,"line":385},12,[121,387,240],{"class":168},[121,389,390],{"class":243},"post",[121,392,247],{"class":168},[121,394,250],{"class":168},[121,396,397],{"class":131},"\u002Faccounts\u002F",[121,399,400],{"class":281},"{account_id",[121,402,142],{"class":291},[121,404,405],{"class":281},"str}",[121,407,408],{"class":131},"\u002Fsync",[121,410,250],{"class":168},[121,412,285],{"class":168},[121,414,416,418,420,423],{"class":123,"line":415},13,[121,417,292],{"class":291},[121,419,295],{"class":291},[121,421,422],{"class":243}," create_sync_job",[121,424,425],{"class":168},"(\n",[121,427,429,432,434,436],{"class":123,"line":428},14,[121,430,431],{"class":260},"    account_id",[121,433,142],{"class":168},[121,435,308],{"class":127},[121,437,438],{"class":168},",\n",[121,440,442,445,447,450,452,455],{"class":123,"line":441},15,[121,443,444],{"class":260},"    queue_service",[121,446,142],{"class":168},[121,448,449],{"class":158}," NamedDependency",[121,451,320],{"class":168},[121,453,454],{"class":158},"QueueService",[121,456,457],{"class":168},"],\n",[121,459,461,463,465,467,469,471,473,475],{"class":123,"line":460},16,[121,462,311],{"class":168},[121,464,314],{"class":168},[121,466,317],{"class":158},[121,468,320],{"class":168},[121,470,323],{"class":127},[121,472,169],{"class":168},[121,474,308],{"class":127},[121,476,330],{"class":168},[121,478,480,483,485,488,491,493,496,498,501,503,505],{"class":123,"line":479},17,[121,481,482],{"class":158},"    result ",[121,484,264],{"class":168},[121,486,487],{"class":154}," await",[121,489,490],{"class":158}," queue_service",[121,492,183],{"class":168},[121,494,495],{"class":243},"enqueue",[121,497,247],{"class":168},[121,499,500],{"class":243},"sync_account",[121,502,169],{"class":168},[121,504,350],{"class":243},[121,506,285],{"class":168},[121,508,510,512,514,516,519,521,523,525,527,530,532,536,539,541,543,545,547,550,552,554,557,559,562,564],{"class":123,"line":509},18,[121,511,336],{"class":154},[121,513,339],{"class":168},[121,515,250],{"class":168},[121,517,518],{"class":131},"task_id",[121,520,250],{"class":168},[121,522,142],{"class":168},[121,524,308],{"class":127},[121,526,247],{"class":168},[121,528,529],{"class":243},"result",[121,531,183],{"class":168},[121,533,535],{"class":534},"sRlkE","id",[121,537,538],{"class":168},"),",[121,540,355],{"class":168},[121,542,358],{"class":131},[121,544,250],{"class":168},[121,546,142],{"class":168},[121,548,549],{"class":158}," result",[121,551,183],{"class":168},[121,553,358],{"class":534},[121,555,556],{"class":168}," or",[121,558,355],{"class":168},[121,560,561],{"class":131},"pending",[121,563,250],{"class":168},[121,565,372],{"class":168},[121,567,569],{"class":123,"line":568},19,[121,570,197],{"emptyLinePlaceholder":30},[121,572,574],{"class":123,"line":573},20,[121,575,197],{"emptyLinePlaceholder":30},[121,577,579,582,584,586],{"class":123,"line":578},21,[121,580,581],{"class":158},"app ",[121,583,264],{"class":168},[121,585,165],{"class":243},[121,587,425],{"class":168},[121,589,591,594,597,600],{"class":123,"line":590},22,[121,592,593],{"class":260},"    route_handlers",[121,595,596],{"class":168},"=[",[121,598,599],{"class":243},"create_sync_job",[121,601,457],{"class":168},[121,603,605,608,610,613,615,618,620,623],{"class":123,"line":604},23,[121,606,607],{"class":260},"    plugins",[121,609,596],{"class":168},[121,611,612],{"class":243},"QueuePlugin",[121,614,247],{"class":168},[121,616,617],{"class":260},"config",[121,619,264],{"class":168},[121,621,622],{"class":243},"QueueConfig",[121,624,625],{"class":168},"())],\n",[121,627,629],{"class":123,"line":628},24,[121,630,285],{"class":168},[56,632,633],{},"Run the application:",[111,635,637],{"className":113,"code":636,"language":115,"meta":116,"style":116},"LITESTAR_APP=app:app litestar run --reload\n",[118,638,639],{"__ignoreMap":116},[121,640,641,644,646,649,651,654],{"class":123,"line":124},[121,642,643],{"class":158},"LITESTAR_APP",[121,645,264],{"class":168},[121,647,648],{"class":131},"app:app",[121,650,180],{"class":127},[121,652,653],{"class":131}," run",[121,655,656],{"class":131}," --reload\n",[56,658,659],{},"Enqueue a task:",[111,661,663],{"className":113,"code":662,"language":115,"meta":116,"style":116},"curl -X POST http:\u002F\u002F127.0.0.1:8000\u002Faccounts\u002Facct-123\u002Fsync\n",[118,664,665],{"__ignoreMap":116},[121,666,667,670,673,676],{"class":123,"line":124},[121,668,669],{"class":127},"curl",[121,671,672],{"class":131}," -X",[121,674,675],{"class":131}," POST",[121,677,678],{"class":131}," http:\u002F\u002F127.0.0.1:8000\u002Faccounts\u002Facct-123\u002Fsync\n",[56,680,681],{},"The response contains a task ID and an initial status. The default in-memory\nqueue and in-app worker are ideal for this first run.",[103,683,685],{"id":684},"production-boundary","Production boundary",[56,687,688],{},"Choose where tasks are stored separately from where they run. The default\nmemory backend stores tasks in one Python process. If the web app and worker\nrun in separate processes, use a shared backend such as SQLSpec, Advanced\nAlchemy, Redis, or Valkey. Use standalone workers when the web app and task\nworkers must scale separately. Cloud Run runs tasks; it does not store them.",[103,690,692],{"id":691},"next-steps","Next steps",[694,695,696,704,711,718,725,732],"ul",{},[697,698,699],"li",{},[59,700,703],{"href":701,"rel":702},"https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002Fgetting_started\u002Findex.html",[63],"Start here",[697,705,706],{},[59,707,710],{"href":708,"rel":709},"https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002Fusage\u002Fconcepts.html",[63],"Understand the model",[697,712,713],{},[59,714,717],{"href":715,"rel":716},"https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002Fusage\u002Findex.html",[63],"Follow a how-to guide",[697,719,720],{},[59,721,724],{"href":722,"rel":723},"https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002Fusage\u002Fbackends.html",[63],"Choose backends",[697,726,727],{},[59,728,731],{"href":729,"rel":730},"https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002Fexamples\u002Findex.html",[63],"Run an example",[697,733,734],{},[59,735,738],{"href":736,"rel":737},"https:\u002F\u002Fcofin.github.io\u002Flitestar-queues\u002Freference\u002Findex.html",[63],"Browse the API reference",[56,740,741],{},"Litestar Queues supports Python 3.10 through 3.14 and is licensed under MIT.",[743,744,745],"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 .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}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}html pre.shiki code .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}",{"title":116,"searchDepth":175,"depth":175,"links":747},[748,749,750],{"id":105,"depth":175,"text":106},{"id":684,"depth":175,"text":685},{"id":691,"depth":175,"text":692},"readmes\u002Flitestar-queues","J98zWzbXUdvgqPbYz0P518E2S5KOQsuQkQOGxEtgoY8",1785155663550]