2016-06-01 2 views
0

나는 진 등의이 POST 요청을 통해 몇 군데 업로드 된 게시하기에 파이썬 요청 모듈을 사용하는 비 GAE 응용 프로그램/요청 핸들러를 가지고 :구글 AppEngine에 : 대체 요청

headers = {"MyAuth" : "xyz"} 
r = requests.post(base_uri, data=open('0.jpg')), headers=headers) 

사용자 업로드 업로드 된 이미지는 로컬에 저장되고 읽기 용으로 열리고 게시물 요청을 통해 원격 분류 프로그램 파이프 라인으로 전송됩니다. 그러면 이미지 기능과 관련하여 JSON이 반환되어 사용자에게 반환됩니다.

은 내가 GAE 응용 프로그램에서이 동작을 구현해야하지만 GAE 더 전통적인 파일 시스템이없는 것을 알고, 그래서 StringIO 사용해야 할 것입니다 : 나는 완전히이에 요청 모듈을 대체 할 수있는 방법

data = ... #some jpg => str 
headers = {"MyAuth" : "xyz"} 
r = requests.post(base_uri, data=StringIO.StringIO(data), headers=headers) 

을 GAE 친화적 인 방식의 예?

감사합니다.

답변

1

앱 엔진에서 HTTP 요청을하는 데 일반적으로 사용되는 모듈은 urlfetch이며, 기본 런타임에는 google.appengine.api.urlfetch을 통해 사용할 수 있습니다. 아마도 urllib2 및/또는 urllib3도 옵션이지만, 나 자신을 사용하지 않았으므로 확실하게 말할 수는 없습니다.

또한 앱 엔진 디렉토리에 install requests을 넣고 프로젝트와 함께 업로드 할 수 있습니다.하지만 요청에는 고유 한 종속성이 있으므로 포함해야 할 번거 로움이 있습니다.

pip install --target myproject/externals/ requests==2.3.0 

지금 같은 요청을 사용할 수 있습니다 :이 문제에 아마 가장 좋은 방법은, 내가 가진 GAE 프로젝트에 작업 요청을 2.3.0을 얻을 수 있었다 있지만

또한

+0

감사합니다. Tim. urlfetch를 살펴 보았지만 이진 업로드를 통해 데이터를 업로드하고 200을 반환하는 동안 분류기는 데이터에서 사용 가능한 기능을 추출 할 수 없었습니다. 기괴한, 나는 분명히 아주 간단한 것을 놓치고있다. 불행히도이 프로젝트에서 나에게 시간이 걸렸으므로 제작에서 2.3.0 요청을 얻을 수있었습니다. – torrange