Механизм приложения Google большая загрузка файла

Я заменил использование Float на BigDecimal для большей точности. Также я использовал две карты, одну для хранения суммированного значения, а другую для подсчета:

public static void main(String[] args) {
        HashMap<String, String> hmap = new HashMap<>();
        HashMap<String, BigDecimal> h2map = new HashMap<>();
        hmap.put("order1", "pending");
        hmap.put("order2", "cancelled");
        hmap.put("order3", "pending");

        h2map.put("order1", new BigDecimal("19.95"));
        h2map.put("order2", new BigDecimal("19.95"));
        h2map.put("order3", new BigDecimal("39.9"));

        //Map for holding sum 
        HashMap<String, BigDecimal> sum = new HashMap<>();

        for(String key : h2map.keySet()){
            if(hmap.get(key) != null){
                String value = hmap.get(key);
                if(sum.get(value) == null){
                    sum.put(value, h2map.get(key));
                }else{
                    sum.put(value, (sum.get(value).add(h2map.get(key))));
                }
            }
        }
        //Map for holding count
        HashMap<String, BigDecimal> countMap = new HashMap<>();
        for(Iterator<Map.Entry<String, BigDecimal>> itr = sum.entrySet().iterator(); itr.hasNext(); ){
            Map.Entry<String, BigDecimal> entry = itr.next();
            String key = entry.getKey();
            int count = Collections.frequency(hmap.values(), key);
            countMap.put((key + count), sum.get(key));
            itr.remove();
        }
        //For GC
        sum = null;
        countMap.forEach((k, v) -> System.out.println(k + " " + v));
    }
15
задан user103920 9 May 2009 в 19:14
поделиться

5 ответов

В настоящее время GAE накладывает ограничение в 10 МБ на загрузку файла (и размер ответа), а также на многие другие вещи; так что даже если бы у вас было достаточно быстрое сетевое соединение, чтобы накачать более 10 МБ за 30 секунд, это было бы бесполезно. Google сказал (я слышал, что Гвидо ван Россум упомянул это вчера здесь, в Pycon Italia Tre), что у него есть планы преодолеть эти ограничения в будущем (по крайней мере, для пользователей GAE, которые платят за использование для превышения квот - не уверен, планы распространяются на пользователей GAE, которые не платят, и, как правило, должны соглашаться на меньшие квоты, чтобы получить бесплатное использование GAE).

8
ответ дан 1 December 2019 в 04:01
поделиться

вам нужно будет выполнить загрузку на другой сервер - я считаю, что 30-секундный тайм-аут нельзя обойти. Если есть способ, поправьте меня, пожалуйста! Я бы хотел знать, как это сделать!

1
ответ дан 1 December 2019 в 04:01
поделиться

Самое близкое, что вы могли бы сделать, это разбить его на части, как вы сохраняете его в GAE, а затем, когда загружаете, собираете вместе, отправляя отдельные запросы AJAX.

0
ответ дан 1 December 2019 в 04:01
поделиться

Я бы согласился с кусками данных в меньшие Blobs и имел бы две таблицы, одна содержит th метаданные (имя файла, размер, количество загрузок, ...и т.д.) и другая содержит куски, эти куски связаны с таблицей метаданных по инородному ключу, я думаю, что это выполнимо. ...

Или когда вы загружаете все части, вы можете просто сложить их вместе в один блок, имеющий одну таблицу.

Но проблема в том, что вам понадобится толстый клиент для обслуживания chunking-данных, например, Java-апплет, который должен быть подписан и доверен вашим клиентам, чтобы он мог получить доступ к локальной файловой системе

.
0
ответ дан 1 December 2019 в 04:01
поделиться

Если время запроса истекает, вы мало что можете сделать. Возможно, ваши файлы слишком велики, и вам придется разбить их на части на клиенте (с помощью чего-то вроде Flash или Java или фреймворка для загрузки, например pupload).

После того как вы доставите файл в приложение, возникает другая проблема - ограничения хранилища данных. Здесь у вас есть два варианта:

  • вы можете использовать сервис BlobStore, который имеет довольно хороший API для обработки закачек размером до 50 мегабайт

  • вы можете использовать что-то вроде bigblobae, который может хранить блобы практически неограниченного размера в обычном хранилище данных appengine.

0
ответ дан 1 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: