You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rqst = Request("POST", f"/{prefix}")
...
async with rqst.fetch() as resp:
data = await resp.json()
o = cls(name, owner_access_key) # type: ignore
if api_session.get().api_version[0] >= 5:
o.id = UUID(data["sessionId"])
o.created = data.get("created", True) # True is for legacy
o.status = data.get("status", "RUNNING")
o.service_ports = data.get("servicePorts", [])
o.domain = domain_name
o.group = group_name
return o
Manager
create_from_params 함수가 cli로부터 받은 요청을 처리 (manager/api/session.py)
manager가 실행될 때, manager/server.py의 build_root_app()함수에서 각 서브 패키지 URL앞에 패키지 이름을 붙인다. 따라서 아래 코드에서 빈 URL이지만, 앞에 “session” prefix가 붙는다. 그래서 create_from_params가 http://127.0.0.1:8091/session 요청을 핸들링하게 된다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Session creation Flow
Run
backend.ai run ...
ComputeSession class
는 client/func/session.py 에 정의되어 있으며,get_or_create
함수에서 Request 객체를 생성하여 manager에 세션 생성 요청을 보낸다.Request URL : POST http://127.0.0.1:8091/session
Manager
create_from_params 함수가 cli로부터 받은 요청을 처리 (manager/api/session.py)
manager가 실행될 때, manager/server.py의 build_root_app()함수에서 각 서브 패키지 URL앞에 패키지 이름을 붙인다. 따라서 아래 코드에서 빈 URL이지만, 앞에 “session” prefix가 붙는다. 그래서
create_from_params
가 http://127.0.0.1:8091/session 요청을 핸들링하게 된다.사용자 권한 체크
_create() (manager/api/session.py)
schedule() (manager/schedule/dispatcher.py)
SchedulerDispatcher class
생성자에서 아래와 같이schedule
함수를 SessionEnqueuedEvent 핸들러로 등록하고 있음. 정확한 연결점이 맞는진 잘 모르겠음prepare() (manager/schedule/dispatcher.py)
schedule
함수와 마찬가지로SchedulerDispatcher class
생성자에서 아래와 같이prepare
함수를 DoPrepareEvent 핸드러로 등록하고 있다.registry.start_session() (manager/registry.py)
kernelAgentBinding
get resource policy for the session
Aggreate image registry information
update single or multi node and create local network with RPCContext
make ClusterInfo
Update session’s environment variable
_create_kernels_in_one_agent() (manager/registry.py)
rpc instance
를 생성하고rpc call
을 통해 해당 agent의create_kernel
함수를 실행시킨다예외가 발생하면 “failed-to-start” 상태로 kernel db 업데이트
Agent
Beta Was this translation helpful? Give feedback.
All reactions