GPU это лишь один из тарифов, а клиент общего назначения. Примеры переписаны на обычные серверы, добавлен пример с масштабированием под нагрузку. Claude-Session: https://claude.ai/code/session_01Loz5stgQZH6ofBdMqTxiJu
38 строки
1.1 KiB
Python
38 строки
1.1 KiB
Python
"""Поднимать серверы под нагрузку и гасить, когда она спала.
|
|
|
|
Тарификация идёт от часа, поэтому есть смысл держать машину не меньше часа
|
|
и не поднимать её ради пары минут работы.
|
|
"""
|
|
import time
|
|
from regcloud_api import RegCloud
|
|
|
|
api = RegCloud()
|
|
POOL_NAME = "worker-"
|
|
SIZE = "c4-m8-d120-hp"
|
|
REGION = "openstack-msk1"
|
|
|
|
|
|
def workers():
|
|
return [s for s in api.list() if s["name"].startswith(POOL_NAME)]
|
|
|
|
|
|
def scale_to(count: int):
|
|
now = workers()
|
|
while len(now) < count:
|
|
n = len(now) + 1
|
|
srv = api.create(size=SIZE, image="ubuntu-24-04-amd64",
|
|
name=f"{POOL_NAME}{n:02d}", region=REGION)
|
|
print("поднял", srv["id"])
|
|
now = workers()
|
|
while len(now) > count:
|
|
victim = now[-1]
|
|
api.destroy(victim["id"])
|
|
print("погасил", victim["id"])
|
|
now = workers()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
scale_to(2)
|
|
time.sleep(5)
|
|
print("сейчас работает:", len(workers()))
|