2011-11-04 3 views
0

현재 내 django 사이트에 대한 REST 웹 서비스를 처음부터 만들려고하고 있으며 외부 학습을 사용하고 싶지 않습니다. 학습 경험이 있어야하기 때문입니다. 내 응용 프로그램 중 하나는 웹 응용 프로그램 역할을하고 다른 응용 프로그램은 웹 서비스 역할을합니다. 나는 웹 서비스를 구현하고 HTTP 응답을 반환하는 방법에 대한 많은 예제를 가지고 있지만 문제는 HTTP 요청을 생성하고 보내는 중이고 예제가 없다. 내 응용 프로그램이 응답을 받고 응답하는 다른 응용 프로그램에 http 요청을 보내길 원합니다.Python의 HttpRequests가 django에 의해 선택되지 않았습니다.

웹 서비스는 브라우저가 생성 한 요청에 완벽하게 응답합니다. 간단히 주소 표시 줄에 리소스의 주소를 쓰면 예상되는 응답을 얻습니다. 파이썬에 내장 된 urllib2의 urlopen을 사용하여 테스트했지만, 소켓이 점유되어 있기 때문에 영원히 중단됩니다. 나는 타임 아웃을 지정하지 않았 음을 알고 있지만, 서버가 요청을 결코 받아들이지 않는다는 것이 더 중요하다. 요청의 로그가 없습니다. 코드와 브라우저의 url은 동일합니다.

Django에서 Httprequest를 간단하게 생성하고 큰 소동을 거치지 않고 보낼 수있는 방법이 있습니까?

#This is the offending line. 
response = urllib2.urlopen('http://127.0.0.1:8000/api/browse/') 

답변

2

이는 개발 서버가 단일 스레드이기 때문입니다. 클라이언트의 원래 요청과 내부적으로 생성 된 요청 모두에 응답 할 수 없으므로 중단됩니다.

+0

좋아요, 그래서 urlopen 호출은 요청을 보낸 후에 대기 모드로 들어가 서버가 응답하지 못하도록합니다. 그런데 어떻게해야합니까? 나는 별도의 서버에서 응용 프로그램을 실행하지 않아도되기를 바랬다. – Steinin

+0

이것은 dev 서버의 제한 사항이며 프로덕션 환경에서는 발생하지 않습니다. –

+0

답변을 수락합니다. 그것은 내가 찾고 있던 것이 아니지만 정답입니다. 단순히 HTTP 요청에 대한 웹 서비스를 제공하면서 기능을 호출함으로써 지나가는 메시지를 건너 뛰었습니다. 이러한 작업을 수행하기 위해 장고 테스트 모듈을 사용했습니다. – Steinin

관련 문제