monologistaからTwitterにもポストしたいんだけど・・・【とりあえず解決編】

現在このブログは中途半端に移行されていますので、画像が表示されなかったり、レイアウトが崩れたりする可能性があります。
この記事を旧ブログで閲覧するには、以下のURLからご覧ください。
http://blog2.monospace.jp/2007/10/03/django_python_twitter_resolved/

前回のエントリーで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

まだ登録されていません。

Add Comment

Add Comment