{"id":13691110,"url":"https://github.com/taskiq-python/taskiq-litestar","last_synced_at":"2025-08-26T00:11:34.645Z","repository":{"id":199906179,"uuid":"703770165","full_name":"taskiq-python/taskiq-litestar","owner":"taskiq-python","description":"Taskiq integration in litestar","archived":false,"fork":false,"pushed_at":"2025-03-20T23:50:16.000Z","size":52,"stargazers_count":11,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-04-21T01:28:45.890Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taskiq-python.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-11T22:08:21.000Z","updated_at":"2025-04-15T15:07:47.000Z","dependencies_parsed_at":"2023-10-13T10:50:50.007Z","dependency_job_id":null,"html_url":"https://github.com/taskiq-python/taskiq-litestar","commit_stats":null,"previous_names":["taskiq-python/taskiq-litestar"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskiq-python%2Ftaskiq-litestar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskiq-python%2Ftaskiq-litestar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskiq-python%2Ftaskiq-litestar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskiq-python%2Ftaskiq-litestar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taskiq-python","download_url":"https://codeload.github.com/taskiq-python/taskiq-litestar/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250306619,"owners_count":21408926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T17:00:40.386Z","updated_at":"2025-04-22T19:17:21.457Z","avatar_url":"https://github.com/taskiq-python.png","language":"Python","funding_links":[],"categories":["Third-Party Extensions"],"sub_categories":["General"],"readme":"# Taskiq Litestar\n\nThis project adds integration with [Litestar](https://litestar.dev/) to [TaskIQ](https://taskiq-python.github.io/).\n\nMainly this project focuses on running starup and shutdown events declared in your litestar app\non worker nodes. This will allow you to access application's state and data from within your tasks.\n\nAlso we add a few dependencies that you can depend on in your tasks.\n* `State` from `litestar.datastructures`;\n* `Litestar` from `litestar`.\n\n# Installation\n\n```bash\npip install taskiq-litestar\n```\n\n# Usage\n\nHere we have a script called `test_script.py` so the listestar app can be found at `test_script:app`. We use strings to resolve application to bypass circular imports.\n\nIn the declared task I depend on a state.\n\n```python\nfrom contextlib import asynccontextmanager\n\nfrom litestar import Litestar, get\nfrom litestar.datastructures import State\nfrom taskiq import TaskiqDepends\nfrom taskiq_redis import ListQueueBroker\n\nimport taskiq_litestar\n\nbroker = ListQueueBroker(\"redis://localhost:6379/0\")\n\ntaskiq_litestar.init(\n    broker,\n    \"test_script:app\",\n)\n\n\n@asynccontextmanager\nasync def app_lifespan(app: Litestar) -\u003e None:\n    \"\"\"Lifespan generator.\"\"\"\n    if not broker.is_worker_process:\n        await broker.startup()\n\n    app.state.value = \"abc123\"\n\n    yield\n\n    if not broker.is_worker_process:\n        await broker.shutdown()\n\n\n@broker.task()\nasync def my_task(state: State = TaskiqDepends()) -\u003e None:\n    \"\"\"My task.\"\"\"\n    print(\"a\", state.dict())  # noqa: T201\n\n\n@get(\"/\")\nasync def index() -\u003e str:\n    \"\"\"Index get handler.\"\"\"\n    await my_task.kiq()\n    return \"Task sent\"\n\n\napp = Litestar([index], lifespan=[app_lifespan])\n```\n\n# Manually update dependency context\n\nWhen using InMemoryBroker you can manually update the dependency context.\nThis might come handy when setting up tests.\n\n```python\nfrom litestar import Litestar\nimport taskiq_litestar\nfrom taskiq import InMemoryBroker\n\nbroker = InMemoryBroker()\n\napp = Litestar()\n\ntaskiq_litestar.init(broker, \"test_script:app\")\ntaskiq_litestar.populate_dependency_context(broker, app)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaskiq-python%2Ftaskiq-litestar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaskiq-python%2Ftaskiq-litestar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaskiq-python%2Ftaskiq-litestar/lists"}