コード例 #1
0
 def _get_sequence_data_pkg(self, sequence_file, upload_id):
     """
     Creates the data encoder, and attaches a monitor for callback functionality
     """
     # build data encoder
     encoder = self._get_multipart_encoder(sequence_file, upload_id)
     # create callback monitor for file progressk
     monitor = MultipartEncoderMonitor(encoder, self._send_file_callback)
     # override max byte read size
     # This lambda overrides httplibs hard coded 8192 byte read size
     # More details: https://github.com/requests/toolbelt/issues/75#issuecomment-237189952
     monitor._read = monitor.read
     monitor.read = lambda size: monitor._read(1024 * 1024)
     # return the monitor/encoder object
     return monitor
コード例 #2
0
        def upload_progress_callback(self, monitor: MultipartEncoderMonitor) -> None:
            # Mandamos um sinal pra barra de progresso para que atualize o valor mostrado
            # baseado na quantidade de bytes lidos e faltantes
            val = int(100 * monitor.bytes_read / monitor.len)
            self.signal_update_progress_bar.emit(val)

            # Se a flag de upload cancelado for ativada, então cancelamos a requisição trocando
            # o método read do MultipartEncoder por uma função que simplesmente levanta a exceção
            # UploadCancelledError. Em seguida, basta tratar da exceção como se fosse um erro de
            # conexão.
            if self.upload_cancelled:
                def cancel_upload(*args, **kwargs):
                    raise UploadCancelledError

                monitor.read = cancel_upload