
让我们做一些快速的数学运算。 Last.fm API对每个原始IP地址每秒施加5个请求的速率限制,在5分钟内平均。 这意味着我们希望通过发出1600个请求(如果假设单个请求花费大约半秒钟)来检索80K scrobbles的最佳执行时间为160秒,也就是两分半钟。 在那里,我们可以从一个半场时间持续到最后只增加时间的时间!
除了不必要的足球参考之外,而且认真地说,为什么不这样做呢? 自从我最近说过使用Go以来,这是我利用goroutine令人敬畏的东西来加快速度的机会。 简而言之,可以将Goroutines视为轻量级线程。 它们是与其他函数同时运行的函数,与线程相比,它们非常便宜。 这就是Go应用程序同时运行数千个goroutine的常见原因。
- 听起来很奇怪,但是您的耳朵快老了
- 8个专辑开发商喜欢编程
- 丹顿乐队去复古
- 翻倍或全无:Big Sean&Metro Boomin项目(评论)
- Vuulm随VX Artist Suite接管了SXSW。 收听Vuulm SXSW播放列表
我已经在Go中重新实现了此数据导出,为每个HTTP请求编写了一个goroutine。 为了避免太频繁地限制速率,我将分30个批次执行此操作。 结果是:执行时间确实从四十五分钟减少到三分钟 。 我们计算得出的时间不是理想的两分半钟,我将其归因于网络的本质,在该网络中,某些请求将花费超过半秒的时间,并且某些请求不可避免地会被阻塞,因此必须将其阻塞。不满。 总而言之-导出现在的工作方式比以前更好。

我还对功能进行了一些扩展,以导出您喜欢的曲目,您听过的艺术家和音乐标签。 您可以从GitHub下载可执行文件。 只需传递Last.fm API密钥(可以在此处获得),用户名和标志(指定要提取的数据)即可运行它。 然后它将数据导出到工作目录中的csv文件中。
lastfmuserexport.exe -key =
-user =
-[scrobbles | loved |艺术家|标签]
对于(稍微)更详细的用法说明,请运行
lastfmuserexport.exe-帮助
最初于 2019 年2月16日 发布在 antonia.elek.hr 。