{"id":21503589,"url":"https://github.com/u2d-ai/msasignal","last_synced_at":"2025-03-17T13:44:28.525Z","repository":{"id":60144420,"uuid":"541272210","full_name":"u2d-ai/msaSignal","owner":"u2d-ai","description":"msaSignal - Signals/Events for Starlette/FastAPI. Signals/Events for Starlette/FastAPI. Run background task without blocking the function that creates the signal. msaSDK.signals tries to stay as a background task runner.","archived":false,"fork":false,"pushed_at":"2022-09-25T18:38:13.000Z","size":23,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-15T23:17:27.000Z","etag":null,"topics":["events","fastapi","microservices","signal-processing"],"latest_commit_sha":null,"homepage":"","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/u2d-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-25T18:37:03.000Z","updated_at":"2022-11-01T14:58:14.000Z","dependencies_parsed_at":"2022-09-25T21:27:35.766Z","dependency_job_id":null,"html_url":"https://github.com/u2d-ai/msaSignal","commit_stats":null,"previous_names":["swelcker/msasignal"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSignal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSignal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSignal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSignal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/u2d-ai","download_url":"https://codeload.github.com/u2d-ai/msaSignal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244044637,"owners_count":20388803,"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":["events","fastapi","microservices","signal-processing"],"created_at":"2024-11-23T18:24:22.661Z","updated_at":"2025-03-17T13:44:28.503Z","avatar_url":"https://github.com/u2d-ai.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"http://logos.u2d.ai/msaSignal_logo.png?raw=true\" alt=\"msaSignal Logo\"/\u003e\n\u003c/p\u003e\n\n------\n\u003cp align=\"center\"\u003e\n    \u003cem\u003emsaSignal - Signals/Events for Starlette/FastAPI.\u003c/em\u003e\n\u003cbr\u003e\n\u003cem\u003eSignals/Events for Starlette/FastAPI. Run background task without blocking the function that creates the signal. \nmsaSDK.signals tries to stay as a background task runner.\u003c/em\u003e\n\u003cbr\u003e\n  \u003ca href=\"https://pypi.org/project/msaSignal\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/pypi/v/msaSignal?color=%2334D058\u0026label=pypi%20package\" alt=\"Package version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/msaSignal\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/pypi/pyversions/msaSignal.svg?color=%2334D058\" alt=\"Supported Python versions\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n------\n\n\n**Documentation**: \u003ca href=\"https://msaSignal.u2d.ai/\" target=\"_blank\"\u003emsaSignal Documentation (https://msaSignal.u2d.ai/)\u003c/a\u003e\n\n\n\n## Features\n- **Middleware**: for Signal or Task.\n- **Decorators**: for signal registry\n- **Helpers**: for Handler, initiate a Signalor a Task\n\n\n## Main Dependencies\n\n- Starlette 0.20.x\n\n\n# Usage - MSASignalMiddleware\n!!! note\n    Only one signal per function, must take request object as arg\n\n### Add middleware\n```python\nfrom msaSignal import MSASignalMiddleware, signal\nfrom fastapi import FastAPI\n\napp = FastAPI()\napp.add_midleware(MSASignalMiddleware, handler=signal)\n\n# OR enable MSASetting for this feature (settings.signal_middleware)\n```\n### Add handler\nSpecify how the fired signal should work.\n```python\nfrom msaSignal import signal\nimport asyncio\n\n@signal.register\nasync def handler(**kwargs):\n    await asyncio.sleep(5)\n    print(kwargs)\n    print('Works!')\n```\n### Fire signal in function\n!!! note\n    Only one signal call is allowed using background task.\n\n```python\nfrom msaSignal import initiate_signal\n@app.get(\"/\")\nasync def endpoint(request: Request):\n    await initiate_signal(request, 'handler',some_data=\"test value\")\n    return {\"status\":\"Success\"}\n```\n# Usage - MSATaskMiddleware\nAny number of tasks, no request object needed.\n### Add middleware\n```python\nfrom msaSignal import MSATaskMiddleware\nfrom fastapi import FastAPI\napp = FastAPI()\napp.add_midleware(MSATaskMiddleware)\n\n# OR enable MSASetting for this feature (settings.task_middleware)\n```\n### Write handler\nSpecify how the fired task should work.\n```python\nasync def handler():\n    await asyncio.sleep(5)\n    print('Works!')\n```\n### Fire task in function\n```python\nfrom msaSignal import initiate_task\n@app.get(\"/\")\nasync def endpoint():\n    await initiate_task(handler,some_data=\"test value\")\n    return {\"status\":\"Success\"}\n```\n## License Agreement\n\n- `msaSignal`Based on `MIT` open source and free to use, it is free for commercial use, but please show/list the copyright information about msaSignal somewhere.\n\n\n## How to create the documentation\n\nWe use mkdocs and mkdocsstring. The code reference and nav entry get's created virtually by the triggered python script /docs/gen_ref_pages.py while ``mkdocs`` ``serve`` or ``build`` is executed.\n\n### Requirements Install for the PDF creation option:\nPDF Export is using mainly weasyprint, if you get some errors here pls. check there documentation. Installation is part of the msaSignal, so this should be fine.\n\nWe can now test and view our documentation using:\n\n    mkdocs serve\n\nBuild static Site:\n\n    mkdocs build\n\n\n## Build and Publish\n  \nBuild:  \n\n    python setup.py sdist\n\nPublish to pypi:\n\n    twine upload dist/*\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu2d-ai%2Fmsasignal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fu2d-ai%2Fmsasignal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu2d-ai%2Fmsasignal/lists"}