Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SoundCloud python api和GAE上传更大的声音_Python_Api_Google App Engine_Soundcloud - Fatal编程技术网

SoundCloud python api和GAE上传更大的声音

SoundCloud python api和GAE上传更大的声音,python,api,google-app-engine,soundcloud,Python,Api,Google App Engine,Soundcloud,我一直在测试SoundCloud Python API,它在处理较小的文件(

我一直在测试SoundCloud Python API,它在处理较小的文件(<1MB)时工作得非常好。现在,我正试图上传更大的文件(5MB+),我得到了错误

代码如下:

import soundcloud
client = soundcloud.Client(
        client_id = app.config['SOUNCLOUD_CLIENT_ID'] ,
        client_secret= app.config['SOUNCLOUD_CLIENT_SECRET'],
        username= app.config['SOUNCLOUD_CLIENT_USERNAME'],
        password= app.config['SOUNCLOUD_CLIENT_PASSWORD'])
try:
    track = client.post('/tracks', track={
              'title':  request.form['song_title'],
              'sharing': 'public',
              'asset_data': blob_reader})
except Exception, e:
               logging.info(xstr(e))
以下是错误日志:

INFO     2014-09-05 18:29:27,199 connectionpool.py:657] Starting new HTTPS connection (1): api.soundcloud.com

INFO     2014-09-05 18:29:39,863 views.py:2308] HTTPSConnectionPool(host='api.soundcloud.com', port=443): Max retries exceeded with url: /tracks.json (Caused by <class 'google.appengine.dist27.gae_override.httplib.HTTPException'>: Deadline exceeded while waiting for HTTP response from URL: https://api.soundcloud.com/tracks.json)

INFO     2014-09-05 18:29:39,914 recording.py:665] Saved; key: __appstats__:064700, part: 157 bytes, full: 222910 bytes, overhead: 0.004 + 0.050; link: http://localhost:8080/_ah/stats/details?time=1409941764737

INFO     2014-09-05 18:29:39,926 module.py:640] default: "POST /scimageupload HTTP/1.1" 200 19
INFO 2014-09-05 18:29:27199 connectionpool.py:657]启动新的HTTPS连接(1):api.soundcloud.com
INFO 2014-09-05 18:29:39863 views.py:2308]HTTPSConnectionPool(host='api.soundcloud.com',port=443):url:/tracks.json超过了最大重试次数(原因:等待url的HTTP响应时超过了截止日期:https://api.soundcloud.com/tracks.json)
INFO 2014-09-05 18:29:39914录制。py:665]已保存;关键字:appstats\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;链接:http://localhost:8080/_ah/stats/details?time=1409941764737
INFO 2014-09-05 18:29:39926 module.py:640]默认值:“POST/scimageupload HTTP/1.1”200 19

请求需要多长时间才能收到错误?Google应用程序引擎会切断超过特定秒数的请求(即“超过截止日期”错误,请参阅获取更多信息)

您可能需要将上载步骤移到web请求之外。以下是GAE为您提供的三种方法:

  • 计划任务(cron):
  • 任务队列:
  • 后台线程:

我通过使用延迟任务队列机制解决了这个问题

在异常处理程序中,我刚刚添加了一个调用: deferred.defer(声音\云\上传\延迟、波段\ id、blob\键、歌曲\标题、\u queue=“sc上传队列”、\u倒计时=5)


然后,创建了一个sound_cloud_upload_defer函数,该函数在单独的队列上运行,具有更好的超时效果。

谢谢。真的很快。大约15秒,它就会得到这个错误。我以前使用过任务队列,可能会在其中尝试一下,看看它是否更好,但我认为这与HTTPSConnectionPool有关。