별로 관심있는 분들이 없는 것 같아서 다음 편을 안 쓰고
있었는데, 오늘 어딘가에서 모듈 관광을 읽었다는 분을 만나고
어딘가에는 읽는 분이 있구나! 싶어서 생각난 김에 한 번 또 씁니다;
오늘의 모듈은 durus 입니다. 이미 SCGI같은 여러 프로그램들로 유명한 CNRI MEMS-Exchange 팀에서 만들었습니다. 원래 파이썬 뿐만 아니라 다양한 환경에서 캐시 공유나 분산 배치 작업 같이 한 데이터 공간을 여러 프로세스가 써야하는 경우에는 memcached가 거의 압도적으로 많이 쓰이는 솔루션이겠지요. durus는 이와 비슷한 역할과 표준 shelve의 기능이 모두 필요한 경우에 요긴하게 쓸 수 있습니다.
미리 서버를 띄워두고.
1
2
3
|
cysteine(perky):~% <b>durus –s</b>
Storage file=/tmp/tmpzRHYiQ address=127.0.0.1:2972
Ready on 127.0.0.1:2972 with 0 objects
|
시험삼아 접속해서 UUID 객체를 하나 넣어봅니다.Watch Full Movie Online Streaming Online and Download
1
2
3
4
5
6
7
8
9
10
11
12
|
cysteine(perky):~% python
Python 2.5.1 (r251:54863, Nov 5 2007, 09:29:15)
[GCC 4.2.1 20070719 [FreeBSD]] on freebsd7
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from durus.client_storage import ClientStorage
>>> from durus.connection import Connection
>>> c = Connection(ClientStorage())
>>>
>>> import uuid
>>> c.root[‘uuid’] = uuid.uuid1()
>>> c.commit()
>>>
|
이렇게 되면 서버에 커밋되었다는 메시지가 보입니다.
1
|
Committed 1 objects 147 bytes at 2007–11–26 20:03:52.203449
|
이제 다시 클라이언트를 따로 띄워서 접속해서 확인해 봅니다.
1
2
3
4
5
6
7
8
9
|
cysteine(perky):~% python
Python 2.5.1 (r251:54863, Nov 5 2007, 09:29:15)
[GCC 4.2.1 20070719 [FreeBSD]] on freebsd7
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from durus.client_storage import ClientStorage
>>> from durus.connection import Connection
>>> c = Connection(ClientStorage())
>>> c.root[‘uuid’]
UUID(‘4353180c-9c0f-11dc-bffd-0001028cad3c’)
|
역시 MEMS Exchange에서 만들었던 다른 작품들과 같이 기능도 괜찮으면서 단순해서 속도도 쓸만합니다. 여러 프로세스가 협업하거나 임시로 떴다 죽었다 하는 프로그램들에서 객체를 다뤄야할 때 쓰면 좋겠네요. ?
몇 년 전이긴 하지만 spambayes에 포함된 Dibbler를 매우 요긴하게 썼다. 간단한 웹서비스 만들 때에 무척 편리하더라. 예컨대 웹으로 서버 상태 관찰, 프로세스 관리, 빌드 자동화 등.
저 꼭꼭 챙겨서 읽습니다. 계속 써주세요. ^^
저도 꼭꼭 챙겨서 읽어요~
저도 꼭 챙겨서 보고 있습니다. 🙂