darkpyonix 가이드

CLI

darkpyonix CLI

모든 명령은 커널 ID가 아니라 노트북 파일을 받습니다. CLI가 매니저를 찾거나 띄우고, 매니저가 그 파일의 커널을 찾거나 띄웁니다.

명령

명령동작
darkpyonix run FILE [--cells 1,3] [--param k=v]… [--python PATH] [--queue] [--detach]파일 전체나 지정한 셀을 실행하고 출력을 따라갑니다. 종료 코드는 실행 결과를 따릅니다: ok 0, error 1, interrupted 130. Ctrl-C는 실행을 인터럽트하고, 두 번째 Ctrl-C는 떼어 내기만 하며 실행은 계속됩니다.
darkpyonix stop FILE실행 중인 셀을 인터럽트합니다. 네임스페이스와 프로세스는 그대로입니다.
darkpyonix status [FILE], darkpyonix ps커널 하나의 상태, 또는 떠 있는 커널 목록입니다.
darkpyonix logs FILE [--run latest|ID] [--follow]실행 기록을 출력합니다. --follow는 진행 중인 실행을 처음부터 다시 보여 주고 계속 따라갑니다.
darkpyonix attach FILE커널의 실시간 이벤트를 따라갑니다.
darkpyonix vars FILE사용자 변수의 이름, 타입, 요약을 보여 줍니다. 셀이 도는 동안은 이름과 타입만 보여 주므로 사용자 객체의 __repr__를 부르지 않습니다.
darkpyonix restart FILE [--hard]soft 재시작은 네임스페이스를 비웁니다. --hard는 같은 인터프리터로 프로세스를 다시 실행하고, 커널 ID는 그대로입니다.
darkpyonix shutdown FILE [--force]인터럽트하고 실행 기록을 마저 쓴 뒤 정상 종료합니다. 프로세스를 죽이는 것은 --force뿐입니다.
darkpyonix kernel FILE [--python PATH]아무것도 실행하지 않고 커널만 띄웁니다.
darkpyonix share FILE --permission viewer1|viewer2|viewer3그 파일 커널의 공유 토큰을 발급합니다. 전용 매니저가 필요합니다. --capabilities read,history,...로 바뀝니다 변경 중 #49
darkpyonix manager [--ephemeral|--dedicated] [--host H] [--port P] [--idle-timeout S]매니저를 실행합니다. 기본은 임시 모드로, 루프백에만 열고 유휴 상태가 이어지면 끝납니다. 두 모드를 함께 주면 오류입니다.

--cells는 번호와 범위를 받습니다(1,3, 2-4). 프리앰블은 0입니다. --param name=value의 값은 JSON으로 해석하고, 안 되면 문자열입니다. --json은 기계가 읽는 형식으로 출력합니다.

종료 코드

코드의미
0실행이 ok로 끝났습니다.
1셀이 예외를 냈습니다. traceback을 출력하며 커널 내부 프레임은 뺍니다.
130실행이 인터럽트됐습니다.
75그 파일의 커널이 이미 실행 중입니다. 아무것도 시작하지 않았습니다.

파일이 바쁠 때

같은 파일의 두 번째 run은 기본적으로 거절되고, 현재 실행의 ID, 시작 시각, 셀과 안내를 출력합니다. 기다리려면 --queue를 붙입니다. 대기열은 들어온 순서로 실행합니다.

멈춤, 재시작, 종료

stop은 실행 중인 셀에 KeyboardInterrupt를 일으키며 보통 1초 안에 멈춥니다. 실행은 interrupted로 끝나고, 대기열은 유지되며, 변수는 다음 실행을 위해 모두 남습니다. DarkPyonix의 어떤 명령도 실행을 멈추려고 커널을 죽이지 않습니다.

restart는 네임스페이스를 비웁니다. restart --hard는 같은 인터프리터와 인자로 프로세스를 다시 실행하며 커널 ID는 그대로입니다. shutdown은 인터럽트하고 실행 기록을 마저 쓴 뒤 끝납니다. 프로세스를 죽이는 것은 shutdown --force뿐입니다.

에이전트에게

CLI는 작업을 잃게 만드는 셸 습관을 대신합니다.

예전DarkPyonix
python train.py > log.txt &darkpyonix run train.py --detach (기록은 자동)
pkill -f train.pydarkpyonix stop train.py (인터럽트, 상태 유지)
tail -f log.txtdarkpyonix logs train.py --follow
같은 파일을 실수로 다시 실행현재 실행 정보와 함께 종료 코드 75
무엇을 계산했는지 잊음darkpyonix vars train.py, 또는 커널 안의 __runs__

어느 매니저를 쓰는가

지금 CLI는 ~/.darkpyonix/managers/*.json에서 살아 있는 매니저를 고르고, 없으면 임시 매니저를 띄웁니다. 에이전트가 다른 매니저의 토큰을 몰라도 같은 OS 사용자면 됩니다. 임시 매니저는 기본 120초 동안 유휴 상태면 끝나고, 커널은 남습니다.

변경 중

등록 파일을 없애는 중입니다 변경 중 #50. 바뀐 뒤 CLI는 DARKPYONIX_MANAGER_URL과 DARKPYONIX_TOKEN이 있으면 그것을 쓰고, 없으면 자기 임시 매니저를 띄워 그 프로세스에서 주소와 토큰을 받습니다. 위의 명령과 동작은 바뀌지 않습니다.