2014-09-24 35 views
0

我正在使用libSpotify 12.1.51(linux-libc6 x86_64)和pyspotify來發出請求,以從python進行發現。libSpotifySDK:加載播放列表時超時

我們一直在使用這段代碼很長一段時間,但突然間的所有超時都在幾個星期前開始了。每次我嘗試加載一個播放列表,我得到一個超時(我有很多的播放列表試過)

下面是一些代碼,複製問題:

import spotify 
import logging 
import os 

class SpotifyClient(object): 
    def __init__(self): 
     config = spotify.Config() 
     config.load_application_key_file(filename=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'spotify_appkey.key')) 
     if spotify.session_instance: 
      self.session = spotify.session_instance 
     else: 
      self.session = spotify.Session(config=config) 
     if not self.session.connection_state == spotify.ConnectionState.LOGGED_IN: 
      self.session.login('OUR_USERNAME', 'OUR_PASSWORD') 
     while not self.session.user: 
      self.session.process_events() 

    def load_playlist(self, playlist_uri): 
     self.playlist = spotify.Link(playlist_uri).as_playlist() 
     self.playlist.load(timeout=20) 

if __name__ == '__main__': 

    logging.basicConfig(level=logging.DEBUG) 

    client = SpotifyClient() 
    client.load_playlist('spotify:user:melek136:playlist:32Gl8vkJmvJCHejGTEgM1t') 

播放列表只是一個我隨意選擇了從我正在嘗試的列表。

這裏是獲取輸出到控制檯:

DEBUG:spotify.session:Notify main thread 
DEBUG:spotify.session:Log message from Spotify: 16:18:40.516 E [ap:4172] ChannelError(0, 1, playlist) 
DEBUG:spotify.session:Notify main thread 
DEBUG:spotify.playlist:Playlist state changed 
DEBUG:spotify.session:Notify main thread 
DEBUG:spotify.session:Notify main thread 
DEBUG:spotify.session:Notify main thread 
DEBUG:spotify.session:Notify main thread 
DEBUG:spotify.session:Notify main thread 
DEBUG:spotify.session:Notify main thread 
Traceback (most recent call last): 
File "x.py", line 27, in <module> 
    client.load_playlist('spotify:user:melek136:playlist:32Gl8vkJmvJCHejGTEgM1t') 
File "x.py", line 20, in load_playlist 
    self.playlist.load(timeout=20) 
File "/home/entura/env/lib/python2.7/site-packages/spotify/playlist.py", line 103, in load 
    return utils.load(self, timeout=timeout) 
File "/home/entura/env/lib/python2.7/site-packages/spotify/utils.py", line 222, in load 
    raise spotify.Timeout(timeout) 
spotify.error.Timeout: Operation did not complete in 20.000s 
+0

這可能是相關的嗎? https://stackoverflow.com/questions/29059169/libspotify-based-client-slow-but-spotifys-own-client-fast – user3756504 2015-03-15 14:55:21

回答

1

libspotify本身不具有用於加載播放列表超時。事實上,在完美的條件風暴中(沒有本地緩存​​,大型帳戶,播放列表服務的行爲緩慢),播放列表可能需要很多分鐘才能加載。

我不太熟悉libspotify的Python綁定,但超時肯定是在那裏引入的。因此,要解決這個問題:

  1. 增加超時值

  2. 清除超時完全(或者,我想,它設置一些瘋狂的高數)

有時Spotify的播放列表服務糟糕的一天,並減緩或完全下降。如果您正在製作的應用程序是面向用戶的應用程序,則應該告訴用戶該播放列表正在加載並將其保留在而不是排除在外。

至於時間安排,好吧,您的緩存可能被破壞,導致libspotify需要更多時間來加載播放列表。也許您正在加載的播放列表非常接近暫停,現在它們會觸發它。也許你的libspotify連接正在被負載平衡到比以前更遠離你的物理位置的Spotify服務器。除了刪除緩存之外,您無法影響這些內容。

+0

謝謝你的回答。位於文件系統(Linux)上的緩存在哪裏以便我可以刪除它?此外 - 我已經嘗試了10000秒的超時,它仍然超時。 (我確實收到Notify主線程)回調,但它永遠不會返回:( – EnturaDev 2014-10-01 12:22:28

+0

緩存位於您告訴它去的任何位置 - 它是libspotify init方法的參數。 – iKenndac 2014-10-01 15:19:04

相關問題