GoogleAppEngineからリモートサイトにファイルをPOSTする必要があるいくつかの異なるアプリケーションがあります。urllib2でいくつかのアプローチを試しましたが、コードをGAEに移動したため、各アプローチで問題が発生しました。
Google App EngineからリモートWebサイトにファイル(csv、zipなど)を投稿する最も簡単な方法は何ですか?既存のファイルを投稿できるようになったら、データストアからのファイルの投稿に進むことができます。
GoogleAppEngineからリモートサイトにファイルをPOSTする必要があるいくつかの異なるアプリケーションがあります。urllib2でいくつかのアプローチを試しましたが、コードをGAEに移動したため、各アプローチで問題が発生しました。
Google App EngineからリモートWebサイトにファイル(csv、zipなど)を投稿する最も簡単な方法は何ですか?既存のファイルを投稿できるようになったら、データストアからのファイルの投稿に進むことができます。
をご覧になりましたかurlfetch
。docsの例。
import urllib
from google.appengine.api import urlfetch
with open('/file', 'r') as f:
data = f.read()
result = urlfetch.fetch(url=url,
payload=data,
method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
参照から、
payload
POST
:またはPUT
リクエストの本文コンテンツ。
したがって、ファイルのコンテンツをロードしてペイロードを設定するだけです
with open(filename, 'r') as fh:
payload = fh.read()
response = urlfetch.fetch(url, payload=payload, method='POST')
そして、あなたがしたいことをしてくださいresponse
。
これは、データストア オブジェクトの文字列とまったく同じ方法で機能します。
EDIT:filename
プロジェクトへの相対パスになる可能性があります。したがって、プロジェクトが/home/dinosaurs/sinclair
ローカル マシン上にあり/home/dinosaurs/sinclair/stuff/contents.xml
、プロジェクト内にある場合、App Engine の本番環境で動作する相対パスはstuff/contents.xml
.