せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【GAE】【Python】NotImplementedError: Only tempfile.TemporaryFile is available for use 発生

モジュールのインポートは正しく出来たものの、GAEデプロイで更にエラー。

File "C:\google_appengine\google\appengine\dist\tempfile.py", line 61, in PlaceHolder
raise NotImplementedError("Only tempfile.TemporaryFile is available for use")

NotImplementedError: Only tempfile.TemporaryFile is available for use


他サイトを参考に(※1)。
Apiクラスのコンストラクタ(ではないみたいだけれども呼び方がまだ分からない)生成時に、cacheの設定をすればいいみたい。
この時点で「Noneが予約語であること」を学びました(←)

■NG

api = twitter.Api(consumer_key='hoge',consumer_secret='hoge',access_token_key='hoge',access_token_secret='hoge',cache=none)

⇒エラー。「NameError: name 'none' is not defined」


再チャレンジ

api = twitter.Api(consumer_key='hoge',consumer_secret='hoge',access_token_key='hoge',access_token_secret='hoge',cache='none')

⇒再びエラー

File "C:\Users\hoge_ADMIN\Desktop\iroironashi\lib\twitter\twitter.py", line 2794, in GetUserTimelin
json = self._FetchUrl(url, parameters=parameters)
File "C:\Users\hoge_ADMIN\Desktop\iroironashi\lib\twitter\twitter.py", line 4530, in _FetchUrl
last_cached = self._cache.GetCachedTime(key)
AttributeError: 'str' object has no attribute 'GetCachedTime'

■OK

api = twitter.Api(…cache=None)


■ようやく画面表示成功

import cgi
import os
from lib.twitter import twitter


api = twitter.Api(consumer_key='hoge',consumer_secret='hoge',access_token_key='hoge',access_token_secret='hoge',cache=None)
statuses = api.GetMentions()
for s in statuses:
print s.created_at


f:id:sekaiya:20130723083328p:plain


※1:【Python】【Google App Enginepython-twitterをGAE上で動作させたい 1回目【下書き】
http://isann.blog2.fc2.com/blog-entry-186.html