computer 잡다/이것저것
python, twisted 사용 소감
omnimook
2008. 11. 4. 16:14
적당한 성능의 서버 프로그래밍을 할 일이 있어서, python과 twisted를 사용해봤다. python과 twisted는 이미 주류 언어와 library 혹은 framework로 자리를 잡은 듯하다.
python은 http://www.python.org 에 관련 문서 및 API소개가 잘 되어 있다. API는 익숙하지 않으면 어떤 식으로 써야 할지 감이 안 오는 문제가 있다.
twisted도 문서가 있긴 한데, 친절하지 않으며 입문 문서로는
"Twsited를 이용한 네트워크 서버 개발"
( http://www.ibm.com/developerworks/kr/library/opendw/20070529/ )
가 괜찮은 것 같다.
python 문법은 간결한 느낌. (semi-colon을 안 붙여서 그런가?) compile 하는 과정이 없어서 테스트하는데 시간을 덜 먹었을 것이라 위안해본다. python이 제공하는 어떤 동적 메커니즘을 이용한다면 디버깅이 좀 더 쉽지 않을까 예상이 된다. 초보인지라 있는지 없는지 모르겠다. 컴파일은 안 했지만, 서버 재시작은 해야 해서 불편했다. 나중에 기회가 되면 서버를 올렸다 내렸다 하지 않고도 디버깅 할 수 있는 방법을 찾아봐야겠다.
twisted는 상당히 다양한 기능들을 내재하고 있으며, framework로서도 웬만한 것은 제공하는 것 같다. 빠르게 prototype을 개발하고 싶을 때 이용하면 좋겠다. 물론, framework의 내용을 어느 정도 파악이 되었을 때 빠르게 개발할 수있으리라. :-)
framework의 특성상 제공하는 범위를 벗어나는 경우에는 시행착오가 필요하다. 내가 겪은 것으로는 process fork와 관련된 사항이다. twisted를 이용한 서버에서 자신이 직접 process fork를 하고 싶어진다면, twisted에 option을 주어서 signal 관리를 직접 하겠다고 flag을 주어야 한다. 만약 이렇게 설정을 하면, twisted가 제공하는 daemon 형식으로 띄우는 기능을 사용하지 못하였다. 결국에 twisted가 제공하는 protocol 기능만 사용하고 나머지는 python이 제공하는 library를 이용했다.
python과 twisted를 이용해서 만족한 것 같고, C++로 했을 때보다는 code 수가 줄었겠지라고 속으로 기대만 해본다.
python은 http://www.python.org 에 관련 문서 및 API소개가 잘 되어 있다. API는 익숙하지 않으면 어떤 식으로 써야 할지 감이 안 오는 문제가 있다.
twisted도 문서가 있긴 한데, 친절하지 않으며 입문 문서로는
"Twsited를 이용한 네트워크 서버 개발"
( http://www.ibm.com/developerworks/kr/library/opendw/20070529/ )
가 괜찮은 것 같다.
python 문법은 간결한 느낌. (semi-colon을 안 붙여서 그런가?) compile 하는 과정이 없어서 테스트하는데 시간을 덜 먹었을 것이라 위안해본다. python이 제공하는 어떤 동적 메커니즘을 이용한다면 디버깅이 좀 더 쉽지 않을까 예상이 된다. 초보인지라 있는지 없는지 모르겠다. 컴파일은 안 했지만, 서버 재시작은 해야 해서 불편했다. 나중에 기회가 되면 서버를 올렸다 내렸다 하지 않고도 디버깅 할 수 있는 방법을 찾아봐야겠다.
twisted는 상당히 다양한 기능들을 내재하고 있으며, framework로서도 웬만한 것은 제공하는 것 같다. 빠르게 prototype을 개발하고 싶을 때 이용하면 좋겠다. 물론, framework의 내용을 어느 정도 파악이 되었을 때 빠르게 개발할 수있으리라. :-)
framework의 특성상 제공하는 범위를 벗어나는 경우에는 시행착오가 필요하다. 내가 겪은 것으로는 process fork와 관련된 사항이다. twisted를 이용한 서버에서 자신이 직접 process fork를 하고 싶어진다면, twisted에 option을 주어서 signal 관리를 직접 하겠다고 flag을 주어야 한다. 만약 이렇게 설정을 하면, twisted가 제공하는 daemon 형식으로 띄우는 기능을 사용하지 못하였다. 결국에 twisted가 제공하는 protocol 기능만 사용하고 나머지는 python이 제공하는 library를 이용했다.
python과 twisted를 이용해서 만족한 것 같고, C++로 했을 때보다는 code 수가 줄었겠지라고 속으로 기대만 해본다.