我使用libSpotify 12.1.51(linux-libc6 x86_64)和pyspotify来发出从python中发现的请求。
我们已经使用了这段代码很长一段时间了,但几周之前突然发生了超时。每次我尝试加载播放列表时,都会超时(我已尝试过很多播放列表)
这里有一些复制问题的代码:
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 :(得分:1)
libspotify本身没有加载播放列表的超时。实际上,在完美的条件风暴中(没有本地缓存,大帐户,播放列表服务行动缓慢),播放列表可能需要很长时间才能加载。
我不太熟悉libspotify的Python绑定,但是当然会引入超时。所以,解决它:
增加超时值
完全删除超时(或者,我想,设置一些疯狂的高数字)
有时,Spotify播放列表服务会有糟糕的一天,并且会一直放慢速度或完全放慢速度。如果你正在制作的应用程序是一个面向用户的东西,你应该告诉用户播放列表正在加载并将其保留在而不是错误输出。
至于时间安排,您的缓存可能会被破坏,导致libspotify需要更多时间来加载播放列表。也许您加载的播放列表非常接近超时,现在它们会触发它。也许您的libspotify连接正在负载平衡到远离您的物理位置的Spotify服务器。除了删除缓存外,您不能影响任何这些事情。