Metadata-Version: 2.4
Name: taskiq-dashboard
Version: 0.3.1
Summary: An interactive dashboard for monitoring and managing Taskiq tasks.
Keywords: taskiq,tasks,distributed,async,admin
Author: Anfimov Dima
Author-email: Anfimov Dima <lovesolaristics@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Framework :: AsyncIO
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development
Classifier: Topic :: System :: Networking
Classifier: Typing :: Typed
Classifier: Operating System :: OS Independent
Requires-Dist: fastapi>=0.120.0
Requires-Dist: uvicorn[standard]>=0.34.1
Requires-Dist: jinja2>=3.1.6
Requires-Dist: asyncpg>=0.30.0
Requires-Dist: sqlalchemy>=2.0.43
Requires-Dist: pydantic-settings>=2.11.0
Requires-Dist: dishka>=1.7.2
Requires-Dist: aiosqlite>=0.21.0
Requires-Dist: taskiq>=0.11.20
Requires-Python: >=3.10
Project-URL: Bug Tracker, https://github.com/danfimov/taskiq-dashboard/issues
Project-URL: Repository, https://github.com/danfimov/taskiq-dashboard/
Description-Content-Type: text/markdown

# taskiq-dashboard

[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/taskiq-dashboard?style=for-the-badge&logo=python)](https://pypi.org/project/taskiq-dashboard/)
[![PyPI](https://img.shields.io/pypi/v/taskiq-dashboard?style=for-the-badge&logo=pypi)](https://pypi.org/project/taskiq-dashboard/)
[![Checks](https://img.shields.io/github/check-runs/danfimov/taskiq-dashboard/main?nameFilter=Tests%20(3.12)&style=for-the-badge)](https://github.com/danfimov/taskiq-dashboard)

Broker-agnostic admin dashboard for Taskiq.

Live demo of UI: [https://taskiq-dashboard.danfimov.com/](https://taskiq-dashboard.danfimov.com/)

## Installation

To install `taskiq-dashboard` package, run the following command:

```bash
pip install taskiq-dashboard
```

To pull the Docker image with `taskiq-dashboard` application , run the following command:

```bash
docker pull ghcr.io/danfimov/taskiq-dashboard:latest
```

## Usage

### Run with code

1. Import and connect middleware to your Taskiq broker:

    ```python
    from taskiq.middlewares.taskiq_admin_middleware import TaskiqAdminMiddleware

    broker = (
        RedisStreamBroker(
            url=redis_url,
            queue_name="my_lovely_queue",
        )
        .with_result_backend(result_backend)
        .with_middlewares(
            TaskiqAdminMiddleware(
                url="http://localhost:8000", # the url to your taskiq-dashboard instance
                api_token="supersecret",  # secret for accessing the dashboard API
                taskiq_broker_name="my_worker",  # it will be worker name in the dashboard
            )
        )
    )
    ```

2. Run taskiq-dashboard with the following code:

    ```python
    from taskiq_dashboard import TaskiqDashboard
    from your_project.broker import broker  # your Taskiq broker instance


    def run_admin_panel() -> None:
        app = TaskiqDashboard(
            api_token='supersecret', # the same secret as in middleware
            storage_type='postgresql',  # or 'sqlite'
            database_dsn="postgresql://taskiq-dashboard:look_in_vault@postgres:5432/taskiq-dashboard",
            broker=broker,  # pass your broker instance here to enable additional features (optional)
            host='0.0.0.0',
            port=8000,
        )
        app.run()


    if __name__ == '__main__':
        run_admin_panel()
    ```

### Run inside docker container

You can use this `docker-compose.yml` file to run `taskiq-dashboard` along with PostgreSQL:

```yaml
services:
  postgres:
    image: postgres:18
    environment:
      POSTGRES_USER: taskiq-dashboard
      POSTGRES_PASSWORD: look_in_vault
      POSTGRES_DB: taskiq-dashboard
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

  dashboard:
    image: ghcr.io/danfimov/taskiq-dashboard:latest
    depends_on:
      - postgres
    environment:
      TASKIQ_DASHBOARD__STORAGE_TYPE: postgres
      TASKIQ_DASHBOARD__POSTGRES__HOST: postgres
      TASKIQ_DASHBOARD__API__TOKEN: supersecret
    ports:
      - "8000:8000"

volumes:
  postgres_data:
```

You can also run `taskiq-dashboard` with SQLite by using the following `docker-compose.yml` file:

```yaml
services:
  dashboard:
    image: ghcr.io/danfimov/taskiq-dashboard:latest
    environment:
      TASKIQ_DASHBOARD__STORAGE_TYPE: sqlite
      TASKIQ_DASHBOARD__SQLITE__DSN: sqlite+aiosqlite:///taskiq_dashboard.db
      TASKIQ_DASHBOARD__API__TOKEN: supersecret
    volumes:
      - taskiq_dashboard_sqlite:/app/taskiq-dashboard.db
    ports:
      - "8000:8000"

volumes:
  taskiq_dashboard_sqlite:
```

## Configuration

Taskiq-dashboard can run with PostgreSQL or SQLite.

You can configure it using environment variables or by passing parameters directly to the `TaskiqDashboard` class. For a full list of configuration options, please refer to the [Configuration article](https://danfimov.github.io/taskiq-dashboard/#configuration) in documentation.

## Development

For development and contributing instructions, please refer to the [Contribution guide](https://danfimov.github.io/taskiq-dashboard/contributing/) in documentation.
