orloj


Nameorloj JSON
Version 0.1.4 PyPI version JSON
download
home_pageNone
SummaryScheduler middleware for ASGI frameworks
upload_time2024-08-07 14:27:31
maintainerNone
docs_urlNone
authorSitt Guruvanich
requires_python<4.0,>=3.8
licenseMIT
keywords asgi blacksheep fastapi litestar quart sanic starlette uvicorn
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Orloj

[![Format](https://img.shields.io/pypi/format/orloj)](https://pypi.org/project/orloj)
[![Python version](https://img.shields.io/pypi/pyversions/orloj)](https://pypi.org/project/orloj)
[![License](https://img.shields.io/pypi/l/orloj)](https://pypi.org/project/orloj)
[![Top](https://img.shields.io/github/languages/top/aekasitt/orloj)](.)
[![Languages](https://img.shields.io/github/languages/count/aekasitt/orloj)](.)
[![Size](https://img.shields.io/github/repo-size/aekasitt/orloj)](.)
[![Last commit](https://img.shields.io/github/last-commit/aekasitt/orloj/master)](.)

[![Orloj banner](static/orloj-banner.svg)](static/orloj-banner.svg)

## Getting started

You can use `orloj` simply by installing via `pip` on your Terminal.

```sh
pip install orloj
```

or alternatively when using [poetry](https://python-poetry.org) package manager as such:

```sh
poetry add orloj
```

And then you can begin using `OrlojMiddleware` in your ASGI project as such

```python
...
from orloj import OrlojMiddleware

def action() -> None:
  """Action to be called by scheduler"""

app.add_middleware(OrlojMiddleware, interval=3, job=action, job_id="scheduled-action")
...
```

The following example shows you how to setup `OrlojMiddleware` to run scheduled tasks alongside
your [FastAPI](https://github.com/tiangolo/fastapi) application.

```python
from fastapi import FastAPI
from logging import Logger, getLogger
from orloj import OrlojMiddleware
from starlette.responses import PlainTextResponse, RedirectResponse

app = FastAPI()
logger: Logger = getLogger("uvicorn")

def hello_name(name: str) -> None:
  logger.info(f"Hello, {name}!")

def hello_world() -> None:
  logger.info("Hello, World!")

@app.get("/")
async def redirect_to_swagger_docs() -> RedirectResponse:
  """Redirects to swagger documentation
  """
  return RedirectResponse("/docs")

@app.get("/health", response_class=PlainTextResponse, status_code=200)
async def health() -> str:
  """Health check
  """
  return "OK"

app.add_middleware(
  OrlojMiddleware, interval=3, job=hello_name, job_id="hello-igor", name="Igor"
)
app.add_middleware(
  OrlojMiddleware, interval=6, job=hello_world, job_id="hello-world"
)
```

## Dependencies

* [APScheduler](https://github.com/agronholm/apscheduler)
  [![PyPI](https://img.shields.io/badge/PyPI-3775A9?logo=pypi&logoColor=white)](https://pypi.org/project/APScheduler)
  [![Docs](https://img.shields.io/readthedocs/apscheduler?logo=readthedocs)](https://apscheduler.readthedocs.io/en/3.x)

* [starlette](https://www.starlette.io)
  [![PyPI](https://img.shields.io/badge/PyPI-3775A9?logo=pypi&logoColor=white)](https://pypi.org/project/starlette)
  [![Docs](https://img.shields.io/badge/MkDocs-526CFE?logo=materialformkdocs&logoColor=white)](https://www.starlette.io)

## Contributions

To contribute to the project, fork the repository and clone to your local device and development
dependencies including three extra libraries not included in final builds as such:

* [mypy](https://github.com/python/mypy) - Optional static typing for Python
* [pytest](https://github.com/pytest-dev/pytest) - The pytest framework makes it easy to write small tests, yet scales to support complex functional testing
* [ruff](https://github.com/astral-sh/ruff) - An extremely fast Python linter and code formatter, written in Rust. 

Use the following commands to setup your local environment with development dependencies:

```bash
pip install --user poetry
poetry install --with dev
```

## Acknowledgements

* [APScheduler Web Examples](https://github.com/agronholm/apscheduler/tree/master/examples/web)
* [Wikimedia Commons - File:Prague Astronomical Clock.svg](https://commons.wikimedia.org/wiki/File:Prague_Astronomical_Clock.svg)

## License

This project is licensed under the terms of the MIT license.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "orloj",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.8",
    "maintainer_email": null,
    "keywords": "asgi, blacksheep, fastapi, litestar, quart, sanic, starlette, uvicorn",
    "author": "Sitt Guruvanich",
    "author_email": "aekazitt+github@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/af/09/7aa45b012a983ea72d422c7a60b1353b33e75351d3f906e412a8045bbac0/orloj-0.1.4.tar.gz",
    "platform": null,
    "description": "# Orloj\n\n[![Format](https://img.shields.io/pypi/format/orloj)](https://pypi.org/project/orloj)\n[![Python version](https://img.shields.io/pypi/pyversions/orloj)](https://pypi.org/project/orloj)\n[![License](https://img.shields.io/pypi/l/orloj)](https://pypi.org/project/orloj)\n[![Top](https://img.shields.io/github/languages/top/aekasitt/orloj)](.)\n[![Languages](https://img.shields.io/github/languages/count/aekasitt/orloj)](.)\n[![Size](https://img.shields.io/github/repo-size/aekasitt/orloj)](.)\n[![Last commit](https://img.shields.io/github/last-commit/aekasitt/orloj/master)](.)\n\n[![Orloj banner](static/orloj-banner.svg)](static/orloj-banner.svg)\n\n## Getting started\n\nYou can use `orloj` simply by installing via `pip` on your Terminal.\n\n```sh\npip install orloj\n```\n\nor alternatively when using [poetry](https://python-poetry.org) package manager as such:\n\n```sh\npoetry add orloj\n```\n\nAnd then you can begin using `OrlojMiddleware` in your ASGI project as such\n\n```python\n...\nfrom orloj import OrlojMiddleware\n\ndef action() -> None:\n  \"\"\"Action to be called by scheduler\"\"\"\n\napp.add_middleware(OrlojMiddleware, interval=3, job=action, job_id=\"scheduled-action\")\n...\n```\n\nThe following example shows you how to setup `OrlojMiddleware` to run scheduled tasks alongside\nyour [FastAPI](https://github.com/tiangolo/fastapi) application.\n\n```python\nfrom fastapi import FastAPI\nfrom logging import Logger, getLogger\nfrom orloj import OrlojMiddleware\nfrom starlette.responses import PlainTextResponse, RedirectResponse\n\napp = FastAPI()\nlogger: Logger = getLogger(\"uvicorn\")\n\ndef hello_name(name: str) -> None:\n  logger.info(f\"Hello, {name}!\")\n\ndef hello_world() -> None:\n  logger.info(\"Hello, World!\")\n\n@app.get(\"/\")\nasync def redirect_to_swagger_docs() -> RedirectResponse:\n  \"\"\"Redirects to swagger documentation\n  \"\"\"\n  return RedirectResponse(\"/docs\")\n\n@app.get(\"/health\", response_class=PlainTextResponse, status_code=200)\nasync def health() -> str:\n  \"\"\"Health check\n  \"\"\"\n  return \"OK\"\n\napp.add_middleware(\n  OrlojMiddleware, interval=3, job=hello_name, job_id=\"hello-igor\", name=\"Igor\"\n)\napp.add_middleware(\n  OrlojMiddleware, interval=6, job=hello_world, job_id=\"hello-world\"\n)\n```\n\n## Dependencies\n\n* [APScheduler](https://github.com/agronholm/apscheduler)\n  [![PyPI](https://img.shields.io/badge/PyPI-3775A9?logo=pypi&logoColor=white)](https://pypi.org/project/APScheduler)\n  [![Docs](https://img.shields.io/readthedocs/apscheduler?logo=readthedocs)](https://apscheduler.readthedocs.io/en/3.x)\n\n* [starlette](https://www.starlette.io)\n  [![PyPI](https://img.shields.io/badge/PyPI-3775A9?logo=pypi&logoColor=white)](https://pypi.org/project/starlette)\n  [![Docs](https://img.shields.io/badge/MkDocs-526CFE?logo=materialformkdocs&logoColor=white)](https://www.starlette.io)\n\n## Contributions\n\nTo contribute to the project, fork the repository and clone to your local device and development\ndependencies including three extra libraries not included in final builds as such:\n\n* [mypy](https://github.com/python/mypy) - Optional static typing for Python\n* [pytest](https://github.com/pytest-dev/pytest) - The pytest framework makes it easy to write small tests, yet scales to support complex functional testing\n* [ruff](https://github.com/astral-sh/ruff) - An extremely fast Python linter and code formatter, written in Rust. \n\nUse the following commands to setup your local environment with development dependencies:\n\n```bash\npip install --user poetry\npoetry install --with dev\n```\n\n## Acknowledgements\n\n* [APScheduler Web Examples](https://github.com/agronholm/apscheduler/tree/master/examples/web)\n* [Wikimedia Commons - File:Prague Astronomical Clock.svg](https://commons.wikimedia.org/wiki/File:Prague_Astronomical_Clock.svg)\n\n## License\n\nThis project is licensed under the terms of the MIT license.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Scheduler middleware for ASGI frameworks",
    "version": "0.1.4",
    "project_urls": null,
    "split_keywords": [
        "asgi",
        " blacksheep",
        " fastapi",
        " litestar",
        " quart",
        " sanic",
        " starlette",
        " uvicorn"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4d56a5e0ebae2a3c90f3bd160eaa068e6ce448ac3a05bc22b840372937b5d1ab",
                "md5": "dc90f1c9d99adefed084110132753ca3",
                "sha256": "1d65f21de6e53dd79117e42a633745f6b6b943f8cfd9871247e6b12aee37d8ac"
            },
            "downloads": -1,
            "filename": "orloj-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "dc90f1c9d99adefed084110132753ca3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 4826,
            "upload_time": "2024-08-07T14:27:30",
            "upload_time_iso_8601": "2024-08-07T14:27:30.061282Z",
            "url": "https://files.pythonhosted.org/packages/4d/56/a5e0ebae2a3c90f3bd160eaa068e6ce448ac3a05bc22b840372937b5d1ab/orloj-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "af097aa45b012a983ea72d422c7a60b1353b33e75351d3f906e412a8045bbac0",
                "md5": "2e20ffae470b4d863b6699acfc45ded0",
                "sha256": "56c466eb1c3f9dd4554c3c5af8edc1f4ae06be891bfdc0ad9c30c010548eb0a6"
            },
            "downloads": -1,
            "filename": "orloj-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "2e20ffae470b4d863b6699acfc45ded0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 4422,
            "upload_time": "2024-08-07T14:27:31",
            "upload_time_iso_8601": "2024-08-07T14:27:31.408227Z",
            "url": "https://files.pythonhosted.org/packages/af/09/7aa45b012a983ea72d422c7a60b1353b33e75351d3f906e412a8045bbac0/orloj-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-07 14:27:31",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "orloj"
}
        
Elapsed time: 0.30152s