Клиент обобщён, снята привязка к видеокартам
GPU это лишь один из тарифов, а клиент общего назначения. Примеры переписаны на обычные серверы, добавлен пример с масштабированием под нагрузку. Claude-Session: https://claude.ai/code/session_01Loz5stgQZH6ofBdMqTxiJu
Этот коммит содержится в:
@@ -0,0 +1,37 @@
|
||||
"""Поднимать серверы под нагрузку и гасить, когда она спала.
|
||||
|
||||
Тарификация идёт от часа, поэтому есть смысл держать машину не меньше часа
|
||||
и не поднимать её ради пары минут работы.
|
||||
"""
|
||||
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()))
|
||||
Ссылка в новой задаче
Block a user