semvec/pypi-packages huggingface dataset:
k8s-lib 0.0.9
Библиотека k8s для sbercloud
License: MIT
Requires Python: >=3.8,<4.0

# Библиотека AICloud kubernetes

Набор ручек и сценариев для работы с нашими объектами через библиотеку

Большинство наших сервисов работает c Kubernetes через SDK. Собираем все здесь,
чтобы соблюдать общий вид и не размазывать логику по сервисам

---


**Пример:** 
> Запустить InferenceService: ```InferenceService(namespace).create(**params) ```
> 
> Запустить задачу обучение: ```MTJob(namespace).start(**params)```
> 
> Запустить ноутбук OneAPI: ```OneAPINotebook(namespace).start(**params)```
> 
> Получить логи задачи обучения ```MTJob(namespace).logs(**params)```
> 
> Получить список образов InferenceService ```InferenceBuild(namespace).list(**params)```
> 
> Получить ключ DockerPush ```DockerPush(namespace).get()```

### core.k8s_lib.K8SLib 
Базовый класс с набором ручек
- Базовые ручки для любого сервиса
- Форматирование ответов
- Обработку и форматирование ошибок
- Базовые Pydantic модели
- Подключение kubernetes SDK
- Рендеринг шаблонов

### service 
Mодуль с реализацией конкретных сервисов
- InferenceService
- MTJob
- MTNotebook
- OneAPINotebook
- Mgmt
- ...

### templates
Шаблоны манифестов / [описание](k8s_lib/templates/README.md)
- inference - Все для инференса
- mt - Все для MT
- mgmt - Все для разворачивания и удаления среды

### cli
Запуск библиотеки в режиме cli. Чтобы можно было с рабочего компьютера 
выполнять запросы над сервисами

```bash
host:~$ k8s-lib inferenceService list 
```

```bash
host:~$ k8s-lib oneapi bootstrap <params> 
```

P.S. Все в cli не нужно затаскивать, а только какие-то длинные сценарии
Пример: bootstrap/debootstrap ns
Yucebio-Scheduler 0.0.5
通用任务调度器-基于APScheduler实现
License: MIT
Requires Python: >=3.5

# 通用任务调度服务-基于APScheduler实现

- 提供基本的任务调度服务默认实现
- 需要配置所使用的持久化存储，建议使用URI形式
    - mongo： `mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]`
    - sqlite: `sqlite://{path/to/sqlite_db_file}.sqlite`
- 提供API接口
    - 基于rpyc实现控制台命令： 包括Client和Server
    - ~~提供适配flask的接口~~
    - 提供适配django+mongo的api

# 控制台使用说明
## 原理

- 基于RPyC（远程Python过程调用）实现一个简单的C/S控制台程序

## 使用

```bash
# 启动服务
yucebio_scheduler server --port ...
# 再启动第二个服务
yucebio_scheduler server --port ...

# 查看作业
yucebio_scheduler jobs --port <port>

# 管理作业: 查看、暂停、重启、移除
yucebio_scheduler manage --port <port> --jobid <jobid> --action <get|pause|resume|remove>

# 添加作业: 需要先指定作业相关参数，再根据调度方式（cron, date, interval）添加额外参数
yucebio_scheduler add --port <port> --id <jobid> --func "moudle:func" --args <func_args> --kwargs <func_kwargs> [sub_command]
```

# 集成到 django （参考flask_django）

## 使用
- 在`INSTALLED_APP`中添加 `yucebio_scheduler.web.django_mongo` （`__init__中预先设置了default_app_config`）
- 在`urls.py`中添加 `path('any_prefix_for_your_app/', include('yucebio_scheduler.web.django_mongo.urls'))`
- 在控制台执行`python manage.py scheduler`命令启动作业调度服务

## 关键逻辑

- api中通过`create_scheduler(block=False)`返回一个`BackgroundScheduler`实例，并自动执行`start(paused=True)`，用于**作业管理**，如add, delete, query等
- server中通过`create_scheduler(block=True)`返回一个`BlockingScheduler`实例，并通过主动调用`scheduler.start()`启动服务，用于**作业调度**

### settings配置(参考flask_apscheduler)
```python
# 持久化数据库，必须提供default命名的配置内容 persist databse, 
SCHEDULER_JOBSTORES = {
    'default': { 
        'type': 'mongodb' ,
        # set any options used in `pymongo.MongoClient`
        'host': 'your-mongodb-host', # or mongdb://{user}:{password}@{host}:{port}/{admin-db}{?options},
        'username': '',
        'password': '',
        # you should always set `database`
        'database': 'your-mongodb-database'
    }
}

# 必须提供default对应的配置项
SCHEDULER_EXECUTORS = {
    'default': { 'type': 'processpool', 'max_workers': 5 },
    'threadpool': {'type': 'threadpool', 'max_workers': 20}
}

# refer to: https://apscheduler.readthedocs.io/en/stable/modules/job.html#module-apscheduler.job
SCHEDULER_JOB_DEFAULTS = {
    'coalesce': False,      # whether to only run the job once when several run times
    'max_instances': 3      # the maximum number of concurrently executing instances allowed for this job
}

# 配置调度器所使用的时区。
from tzlocal import get_localzone
SCHEDULER_TIMEZONE = get_localzone()

# 配置自动添加的初始作业
SCHEDULER_JOBS = []

# 配置日志等级 refer to: https://apscheduler.readthedocs.io/en/stable/userguide.html#troubleshooting
import logging
logging.getLogger('apscheduler').setLevel(logging.DEBUG)
```


## 服务(提供一个django自定义命令)

## URL
```
prefix/                     show basic info
prefix/get_scheduler_info   show basic info(equal to prefix/)

prfix/jobs                  list all jobs
prefix/<action>/<job_id>    process a special job, action could be [show | delete | pause | resume | run]
```