2014-09-24 1 views
0

libSpotify 12.1.51 (linux-libc6 x86_64)을 사용 중이며 python에서 위치를 확인하도록 요청합니다.libSpotifySDK : 재생 목록로드 시간이 초과되었습니다.

우리는이 코드를 오랫동안 사용해 왔지만, 갑작스러운 타임 아웃은 2 주 전부터 시작되었습니다. 때마다 나는 여기에 문제를 복제하는 코드의

(나는 많은 재생 목록 시도했다) 내가 타임 아웃을 얻을 재생 목록을로드하려고 :

재생 목록은 하나의 내가에서 무작위로 선택했다
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

답변

1

자체가 로딩 재생 목록에 대한 시간 제한이없는 libspotify. 사실, 조건의 완벽한 폭풍 (로컬 캐시, 대형 계정, 재생 목록 서비스가 느리게 작동하지 않음)에서 재생 목록을로드하는 데 많은 시간이 걸릴 수 있습니다.

나는 libspotify 용 파이썬 바인딩에 정통하지 않지만 타임 아웃은 분명히 소개되어있다. 그래서, 그것을 해결하기 위해 :

  1. 증가 시간 제한 값

  2. 전체 시간 제한을 제거 때로는

스포티 파이 재생 목록 (I 추측, 또는, 그것을 어떤 미친 높은 수를 설정) 서비스는 나쁜 날을 보내고 오른쪽 아래로 천천히 내려가거나 모두 내려갑니다. 만들고있는 응용 프로그램이 사용자 지향적 인 것이라면 사용자에게 재생 목록이로드 중임을 알리고 오류를 남기지 않고 그대로 두어야합니다.

타이밍에 관해서는, 음, 캐시가 망가져서 libspotify가 재생 목록을로드하는 데 더 많은 시간을 필요로 할 가능성이 있습니다. 어쩌면 당신이 로딩하고있는 재생 목록이 정말로 타임 아웃에 가까웠을 것입니다. 아마도 libspotify 연결이 이전보다 실제 위치에서 더 멀리 떨어진 Spotify 서버로로드 밸런싱 될 것입니다. 캐시를 삭제하는 것 외에는 이러한 일에 영향을 줄 수 없습니다.

+0

답변 해 주셔서 감사합니다. 파일 시스템 (Linux)에있는 캐시는 어디에서 삭제할 수 있습니까? 또한 - 10000 초의 시간 초과를 시도했지만 여전히 시간 초과에 도달했습니다. (나는 Notify main thread를 얻는다.) 콜백을 전체 기간 동안 얻지 만 결코 반환하지 않는다 : ( – EnturaDev

+0

캐시는 당신이 가서 그것을 말할 때마다 위치한다 - libspotify의 init 메소드에 대한 매개 변수이다. – iKenndac

관련 문제