AppEngine: получение только 1 КБ при загрузке с извлеченного URL на S3 - PullRequest
2 голосов
/ 07 марта 2011

Я пытаюсь загрузить файл, полученный с сервера.Но если размер загруженного файла превышает 1 МБ, на S3 будет сохранен только небольшой файл размером 1 КБ.Если его размер меньше 1 МБ, файл будет сохранен правильно.

Я искал и пробовал разные способы, но ни один из них не работает.Вот класс, который запускается пользователем, нажимающим кнопку.

`class Fetch_by_button (webapp.RequestHandler):

def get(self):
    #1. fetch the file
    try: 
        result = urlfetch.fetch('http://someurl.com/music.mp3') # file with 2MB
        #result = urlfetch.fetch('http://anotherurl.com/document.pdf') #file with 900KB is working
    except DownloadError:
        print("URL fetch doesnt work properly")

    #2. search datastore UserData-model by userobject to get s3 credentials
    usr = users.get_current_user()
    query = UserData.gql("WHERE account =:1", usr)
    qr = query.get()

    #3. establish connection to s3
    conn = S3Connection(qr.s3_accesskey, qr.s3_secret_accesskey)

    #4. create bucket
    ak_lowercase = str.lower(str(qr.s3_accesskey))
    individual_bucket_name = ak_lowercase + '_' + usr.nickname()
    bucket = conn.create_bucket(individual_bucket_name)

    #5. generate key and assign to already created bucket
    k = Key(bucket)

    #6. name the key by some examplary filename
    k.key = 'justsomefilename'

    #7. save the correspondent value to the created key
    k.set_contents_from_string(result.content)`

У меня просто нет никакой подсказки, почему это происходит.Что-то с моим кодом, некоторые ограничения AppEngine, что-нибудь с boto, ... Есть предложения?

Заранее спасибо.

1 Ответ

2 голосов
/ 07 марта 2011

Максимальный размер запроса на ядре приложения составляет 1 МБ для urlfetch.Я предполагаю, что ваш класс S3Connection использует это для фактической передачи.

Ответы могут быть до 32 МБ, поэтому загрузка работает.

...