Каков наилучший способ для переноса больших файлов асинхронно в флягу? Я прочитал это . Но я хочу знать, есть ли способ сделать это без использования сельдерея.Передача больших файлов асинхронно в фляге
Заранее спасибо
Каков наилучший способ для переноса больших файлов асинхронно в флягу? Я прочитал это . Но я хочу знать, есть ли способ сделать это без использования сельдерея.Передача больших файлов асинхронно в фляге
Заранее спасибо
Колбы является синхронной рамкой, вы можете попробовать флягу + GEvent и потоковые ответы, как описано здесь: http://flask.pocoo.org/docs/0.12/patterns/streaming/.
В любом случае, если вы хотите правильно загрузить очень большие файлы, я предлагаю вам использовать другой подход. Вместо того, чтобы пытаться выполнить асинхронную работу с синхронной картой, попробуйте делегировать передачу с помощью Nginx upload_module, как описано здесь: http://blog.thisisfeifan.com/2013/03/nginx-upload-module-vs-flask.html
Nginx работает быстрее и не загружает файлы в памяти, это обычные фреймворки, такие как Flask или Django даже в асинхронном режиме. Не забудьте настроить колбу для получения после загрузки POST с директивой upload_pass
. Единственное ограничение в том, что вы будете иметь, чтобы узнать, как собрать полный оперять Nginx от источника, здесь пример рабочего Dockerfile:
FROM buildpack-deps:jessie
##### NGINX #####
# Base Stuff
RUN apt-get update && apt-get install -y -qq \
libssl-dev
# Nginx with upload_module and upload_progress_module
# "Stable version".
ENV ZLIB_VERSION 1.2.11
ENV PCRE_VERSION 8.39
ENV NGX_UPLOAD_MODULE_VERSION 2.2
ENV NGX_UPLOAD_PROGRESS_VERSION 0.9.1
ENV NGX_HEADERS_MORE_VERSION 0.32
ENV NGX_SPPEDPAGE_VERSION 1.11.33.4
ENV NGINX_VERSION 1.11.8
RUN cd /tmp \
&& wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \
&& tar xvf nginx-${NGINX_VERSION}.tar.gz \
&& wget https://github.com/openresty/headers-more-nginx-module/archive/v${NGX_HEADERS_MORE_VERSION}.tar.gz \
&& tar -xzvf v${NGX_HEADERS_MORE_VERSION}.tar.gz \
&& wget https://github.com/pagespeed/ngx_pagespeed/archive/latest-stable.tar.gz \
&& tar -xzvf latest-stable.tar.gz \
&& wget https://dl.google.com/dl/page-speed/psol/${NGX_SPPEDPAGE_VERSION}.tar.gz \
&& tar -xzvf ${NGX_SPPEDPAGE_VERSION}.tar.gz \
&& mv psol ngx_pagespeed-latest-stable/ \
&& git clone -b ${NGX_UPLOAD_MODULE_VERSION} https://github.com/Austinb/nginx-upload-module \
&& wget http://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \
&& tar xvf zlib-${ZLIB_VERSION}.tar.gz \
&& wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${PCRE_VERSION}.tar.bz2 \
&& tar -xjf pcre-${PCRE_VERSION}.tar.bz2 \
&& wget https://github.com/masterzen/nginx-upload-progress-module/archive/v${NGX_UPLOAD_PROGRESS_VERSION}.tar.gz \
&& tar xvf v${NGX_UPLOAD_PROGRESS_VERSION}.tar.gz \
&& cd nginx-${NGINX_VERSION} \
&& ./configure \
--with-pcre=../pcre-${PCRE_VERSION}/ \
--with-zlib=../zlib-${ZLIB_VERSION}/ \
--add-module=../nginx-upload-module \
--add-module=../nginx-upload-progress-module-${NGX_UPLOAD_PROGRESS_VERSION} \
--add-module=../ngx_pagespeed-latest-stable \
--add-module=../headers-more-nginx-module-${NGX_HEADERS_MORE_VERSION} \
--with-select_module \
--with-poll_module \
--with-file-aio \
--with-http_ssl_module \
--with-ipv6 \
--with-pcre-jit \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--user=nginx --group=nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --with-cpu-opt=CPU -- with-ld-opt="-Wl,-E" \
&& make \
&& make install
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
Примечание: Пожалуйста, в этом изображении не хватает предоставление nginx.conf и default.conf.
Перевести, где? От клиента? К клиенту? На другой сервер? – dirn
@dirnОт клиента к серверу – TheNone
Флажок - это синхронный фрейм, вы можете попробовать flask + gevent и потоковые ответы, как описано здесь: http://flask.pocoo.org/docs/0.12/patterns/streaming/ – danigosa