monologistaからTwitterにもポストしたいんだけど・・・【とりあえず解決編】
投稿日:2007/10/03 02:48:09
過去の記事は移行時の問題により、画像が表示されなかったり、レイアウトが崩れたりしている可能性があります。
Tweet
前回のエントリーでTwitterのAPIをいじってたんですが、
なんだか自分領域を超えたので、放置しようと思ったんですが、
コメント欄でMiCHiLUさんに助けてもらいました。
MiCHiLUさんのコードそのままでいけました。
ここに載せさせて頂きます。
[python]
#mytwitter.py
import twitter
import urllib2
class MyApi(twitter.Api):
def __init__(self,
username=None,
password=None,
input_encoding=None,
request_headers=None,
root_directory=None):
self._cache = twitter._FileCache(root_directory=root_directory) #問題箇所?
self._urllib = urllib2
self._cache_timeout = twitter.Api.DEFAULT_CACHE_TIMEOUT
self._InitializeRequestHeaders(request_headers)
self._InitializeUserAgent()
self._input_encoding = input_encoding
self.SetCredentials(username, password)
[/python]
[python]
#Djangoのmodels.pyでsave()のときに呼び出してます
api = MyApi(username='user', password='pass', root_directory='/tmp/')
[/python]
せっかくなので、_FileCache()について一応ソースを追ってみましたが・・・。
引数でroot_directoryが渡っていないときは、
tempfileモジュールを使って一時ファイル置き場を探したりしてます。
うちのサーバは、Linuxなんで/tmpあたりになりそうなんですが、
見つけられてないのかな・・・そんなはずもなさそうだけど。
というわけで、もうちょい調査です。
【追記:10/3 3:46】
エラー発生箇所が分かりました。
twitter.pyの_FileCacheクラスの_GetUsernameメソッドです。
この中のos.getlogin()が原因でした。
Pythonのシェルとか開発サーバだと実行ユーザがちゃんととれてたんで
大丈夫だったみたいですね。でもWebサーバ経由するとだめなのはなぜ・・・
次は、os.getloginか。
[python]
#twitter.py _FileCacheクラス
def _GetUsername(self):
'''Attempt to find the username in a cross-platform fashion.'''
return os.getenv('USER') or \
os.getenv('LOGNAME') or \
os.getenv('USERNAME') or \
os.getlogin() or \ #ここでエラー
'nobody'
[/python]
- Posted at:
- 2007/10/03 02:48:09
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2007/10/03/django_python_twitter_resolved/trackback/
TrackBacks
まだ登録されていません。
Comments
まだ登録されていません。