2011-11-07 4 views
2

데이터 처리 모듈을 구현하려고합니다.POST 데이터 수집, 처리 및 해당 데이터 POST 외부 URL

시나리오는,

  1. 먼저 사용자는 일부 데이터를 게시 할 예정입니다.
  2. 사용자 게시 된 데이터를 처리해야하며 여기에 더 많은 정보를 추가해야합니다.
  3. 처리 된 POST 데이터는 사용자 개입없이 외부 URL로 보내야합니다.

외부 URL은 POST 요청 만 수락합니다.

이 POST 데이터를 외부 URL로 보내는 방법을 제안 해주세요.

업데이트 제안으로

, 내가 요청을 사용하기 시작했다. 난 초기 POST 데이터를 수집 뷰

, I는 사용자와 다른 데이터 객체 (처리 후)의 데이터를 기록 컴파일 대상물에 좀 더 많은 데이터를 추가하고 다음과 같은 설정 POST 요청하고있어

req = requests.post(post_url, data=post_obj) 

반환되는 status_code는 200입니다. 하지만 데이터 (post_obj)는 post_url로 전송되지 않습니다. post_url이 POST 데이터를받지 못했다는 메시지를 표시합니다. 나는 REQ 개체를 확인

,

req.request.data는 post_obj 정보를 갖고있는 것 같아요 및 req.request.url는

req.url가 있음을 자극하는 REDIRECT_URL이있는 POST_URL있다 post_url에 데이터가 수신되지 않았습니다.

내 질문/대답 :

실제로 데이터를 POST하는 방법은 무엇입니까? 뷰에서 반환해야하는 객체는 무엇입니까?

데이터를 게시하는 방법 (requests.post 메서드)이 잘못되었습니다. 나에게 적절한 방법을 제안 해주세요.

참고 : 데이터를 post_url에 게시하면 다른 페이지로 리디렉션됩니다.

+0

다른 질문을하고 싶을 수도 있습니다. 그렇지 않으면 더 많은 코드를 게시하십시오. –

+1

POST 요청에 대해 객체를 올바르게 인코딩하려면'data = urllib.urlencode (post_obj)'를 수행해야한다고 생각합니다. –

답변

0

표준 라이브러리 urllib2을 사용하여 두 번째 POST를 수행 할 수 있습니다.

나는 또한 urllib2보다 사용하기 쉬운 requests library에 관한 좋은 점을 들었습니다. (모든 urllib2가 내장 비단뱀을 사용하고 HTTPLIB)

+0

내가 찾는 해결책처럼 보입니다. 고맙습니다. – CrazyLazy

2

사용 Urllib2, mechanise 또는 requests는 또는 pycurl (libcurl에를 사용하는) 외부 리소스에 게시물을 할 수 있습니다.

요청하는 것이 가장 쉽습니다. 기계화는 양식 작성 및 브라우저와 같은 프로그래밍에 적합합니다. urllib2는 기본 라이브러리이므로 중요한 점은 pycurl이 특히 중요하지 않기 때문에 (imo) 최후의 수단이라는 것입니다. 유지 관리

대기열을 사용하여 서버 -> 제 3 자 단계를 처리 한 다음 비동기 적으로 작업이 완료되었음을 사용자에게보고해야합니다. 그렇지 않으면 타사 응용 프로그램이 오래 걸리면 연결 시간을 마주 칠 수 있습니다. 응창 성가.

+0

귀하의 답변에서 mechanicalize는 내 청구서에 잘 부합합니다 ... 지금 시도해 보겠습니다. – CrazyLazy