Commit 579eafcc by tanghuan

测试

1 parent 60c0f661
...@@ -6,12 +6,12 @@ import 'package:appframe/services/dispatcher.dart'; ...@@ -6,12 +6,12 @@ import 'package:appframe/services/dispatcher.dart';
import 'package:appframe/utils/file_type_util.dart'; import 'package:appframe/utils/file_type_util.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:logger/logger.dart'; // import 'package:logger/logger.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
class UploadFile2Handler extends MessageHandler { class UploadFile2Handler extends MessageHandler {
static final upLogger = Logger(level: Level.debug); // static final upLogger = Logger(level: Level.debug);
@override @override
Future handleMessage(params) async { Future handleMessage(params) async {
...@@ -34,14 +34,17 @@ class UploadFile2Handler extends MessageHandler { ...@@ -34,14 +34,17 @@ class UploadFile2Handler extends MessageHandler {
} }
final startTime = DateTime.now(); final startTime = DateTime.now();
upLogger.d('开始上传文件,$startTime'); // upLogger.d('开始上传文件,$startTime');
print('====================>开始上传文件,$startTime');
// final result = await compute(_handleUpload, {'filePath': tempFilePath, 'busi': busi, 'subBusi': subBusi}); // final result = await compute(_handleUpload, {'filePath': tempFilePath, 'busi': busi, 'subBusi': subBusi});
final result = await _handleUpload(tempFilePath, busi, subBusi); final result = await _handleUpload(tempFilePath, busi, subBusi);
final endTime = DateTime.now(); final endTime = DateTime.now();
upLogger.d('完成上传文件,$endTime'); // upLogger.d('完成上传文件,$endTime');
upLogger.d('上传完成,耗时:${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒'); print('====================>完成上传文件,$endTime');
// upLogger.d('上传完成,耗时:${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒');
print('====================>上传完成,耗时:${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒');
result['startTimestamp'] = startTime.toString(); result['startTimestamp'] = startTime.toString();
result['endTimestamp'] = endTime.toString(); result['endTimestamp'] = endTime.toString();
...@@ -77,11 +80,13 @@ class UploadFile2Handler extends MessageHandler { ...@@ -77,11 +80,13 @@ class UploadFile2Handler extends MessageHandler {
//并行上传分段 //并行上传分段
var startTime = DateTime.now(); var startTime = DateTime.now();
upLogger.d("开始异步处理 $startTime"); // upLogger.d("开始异步处理 $startTime");
print('====================>开始异步处理 $startTime');
final uploadResult = final uploadResult =
await _uploadInParallel(bxeApiService, obsApiService, logicPrefix, filePath, maxConcurrency: 30); await _uploadInParallel(bxeApiService, obsApiService, logicPrefix, filePath, maxConcurrency: 30);
var endTime = DateTime.now(); var endTime = DateTime.now();
upLogger.d("完成异步处理 $endTime ,耗时 ${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒"); // upLogger.d("完成异步处理 $endTime ,耗时 ${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒");
print('====================>完成异步处理 $endTime ,耗时 ${endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch} 毫秒');
// 上传结果 // 上传结果
String objectKey = uploadResult['objectKey'] as String; String objectKey = uploadResult['objectKey'] as String;
...@@ -91,10 +96,12 @@ class UploadFile2Handler extends MessageHandler { ...@@ -91,10 +96,12 @@ class UploadFile2Handler extends MessageHandler {
//请求合并文件 //请求合并文件
var startTime2 = DateTime.now(); var startTime2 = DateTime.now();
upLogger.d("开始处理合并文件 $startTime2"); // upLogger.d("开始处理合并文件 $startTime2");
print('====================>开始处理合并文件 $startTime2');
String location = await _merge(bxeApiService, objectKey, bucket, uploadId, tagsMap); String location = await _merge(bxeApiService, objectKey, bucket, uploadId, tagsMap);
var endTime2 = DateTime.now(); var endTime2 = DateTime.now();
upLogger.d("合并文件完成 $endTime2 ,耗时 ${endTime2.millisecondsSinceEpoch - startTime2.millisecondsSinceEpoch} 毫秒 "); // upLogger.d("合并文件完成 $endTime2 ,耗时 ${endTime2.millisecondsSinceEpoch - startTime2.millisecondsSinceEpoch} 毫秒 ");
print('====================>合并文件完成 $endTime2 ,耗时 ${endTime2.millisecondsSinceEpoch - startTime2.millisecondsSinceEpoch} 毫秒 ');
//关闭Dio //关闭Dio
bxeApiService.close(); bxeApiService.close();
...@@ -122,15 +129,18 @@ class UploadFile2Handler extends MessageHandler { ...@@ -122,15 +129,18 @@ class UploadFile2Handler extends MessageHandler {
throw Exception('上传的文件过大'); throw Exception('上传的文件过大');
} }
upLogger.d('文件大小:$fileSize'); // upLogger.d('文件大小:$fileSize');
print('====================>文件大小:$fileSize');
//分段大小2M //分段大小2M
final chunkSize = Constant.obsUploadChunkSize; final chunkSize = Constant.obsUploadChunkSize;
upLogger.d('分段大小:$chunkSize'); // upLogger.d('分段大小:$chunkSize');
print('====================>分段大小:$chunkSize');
//分段总数 //分段总数
final totalChunks = (fileSize / chunkSize).ceil(); final totalChunks = (fileSize / chunkSize).ceil();
upLogger.d('分段总数:$totalChunks'); // upLogger.d('分段总数:$totalChunks');
print('====================>分段总数:$totalChunks');
final randomAccessFile = file.openSync(); final randomAccessFile = file.openSync();
...@@ -153,13 +163,16 @@ class UploadFile2Handler extends MessageHandler { ...@@ -153,13 +163,16 @@ class UploadFile2Handler extends MessageHandler {
final futures = <Future>[]; final futures = <Future>[];
for (int i = 0; i < totalChunks; i++) { for (int i = 0; i < totalChunks; i++) {
upLogger.d('开始处理分段:$i'); // upLogger.d('开始处理分段:$i');
print('====================>开始处理分段:$i');
// 控制并发数量 // 控制并发数量
if (futures.length >= maxConcurrency) { if (futures.length >= maxConcurrency) {
upLogger.d('超过最大并发数量,等待'); // upLogger.d('超过最大并发数量,等待');
print('====================>超过最大并发数量,等待');
var resultList = await Future.wait(futures); var resultList = await Future.wait(futures);
upLogger.d('等待完成'); // upLogger.d('等待完成');
print('====================>等待完成');
for (var result in resultList) { for (var result in resultList) {
if (result is Map<String, dynamic>) { if (result is Map<String, dynamic>) {
...@@ -188,7 +201,8 @@ class UploadFile2Handler extends MessageHandler { ...@@ -188,7 +201,8 @@ class UploadFile2Handler extends MessageHandler {
chunkSignUrl = nextResult['signed_url'] as String; chunkSignUrl = nextResult['signed_url'] as String;
} }
final endTime = DateTime.now().millisecondsSinceEpoch; final endTime = DateTime.now().millisecondsSinceEpoch;
upLogger.d('分段$i,签名耗时:${endTime - startTime} 毫秒'); // upLogger.d('分段$i,签名耗时:${endTime - startTime} 毫秒');
print('====================>分段$i,签名耗时:${endTime - startTime} 毫秒');
// await _uploadChunkWithRetry(obsApiService, chunkSignUrl, i, chunk, tagsMap); // await _uploadChunkWithRetry(obsApiService, chunkSignUrl, i, chunk, tagsMap);
// final future = _uploadChunkWithRetry(obsApiService, chunkSignUrl, i, chunk, tagsMap); // final future = _uploadChunkWithRetry(obsApiService, chunkSignUrl, i, chunk, tagsMap);
...@@ -249,10 +263,12 @@ class UploadFile2Handler extends MessageHandler { ...@@ -249,10 +263,12 @@ class UploadFile2Handler extends MessageHandler {
var maxRetries = 30; var maxRetries = 30;
final start = DateTime.now(); final start = DateTime.now();
upLogger.d('new Isolate--- 分段$chunkIndex,开始时间:$start'); // upLogger.d('new Isolate--- 分段$chunkIndex,开始时间:$start');
print('====================>new Isolate--- 分段$chunkIndex,开始时间:$start');
for (int attempt = 0; attempt <= maxRetries; attempt++) { for (int attempt = 0; attempt <= maxRetries; attempt++) {
upLogger.d('new Isolate--- 分段$chunkIndex,第 ${attempt + 1} 次,开始时间:${DateTime.now()}'); // upLogger.d('new Isolate--- 分段$chunkIndex,第 ${attempt + 1} 次,开始时间:${DateTime.now()}');
print('====================>new Isolate--- 分段$chunkIndex,第 ${attempt + 1} 次,开始时间:${DateTime.now()}');
try { try {
final obsApiService = ApiService(defaultHeaders: {'Content-Type': '', 'Accept': ''}); final obsApiService = ApiService(defaultHeaders: {'Content-Type': '', 'Accept': ''});
final resp = await _uploadChunk(obsApiService, signUrl, chunk, chunkIndex); final resp = await _uploadChunk(obsApiService, signUrl, chunk, chunkIndex);
...@@ -260,8 +276,9 @@ class UploadFile2Handler extends MessageHandler { ...@@ -260,8 +276,9 @@ class UploadFile2Handler extends MessageHandler {
final etags = resp.headers['etag'] as List<String>; final etags = resp.headers['etag'] as List<String>;
// tagsMap[chunkIndex + 1] = etags[0]; // tagsMap[chunkIndex + 1] = etags[0];
final end = DateTime.now(); final end = DateTime.now();
upLogger.d( // upLogger.d(
'new Isolate--- 分段$chunkIndex,完成时间: $end,上传段耗时:${end.millisecondsSinceEpoch - start.millisecondsSinceEpoch}毫秒'); // 'new Isolate--- 分段$chunkIndex,完成时间: $end,上传段耗时:${end.millisecondsSinceEpoch - start.millisecondsSinceEpoch}毫秒');
print('====================>new Isolate--- 分段$chunkIndex,完成时间: $end,上传段耗时:${end.millisecondsSinceEpoch - start.millisecondsSinceEpoch}毫秒');
return Future.value({'idx': chunkIndex + 1, 'etag': etags[0]}); // 上传成功 return Future.value({'idx': chunkIndex + 1, 'etag': etags[0]}); // 上传成功
} else { } else {
throw Exception('Chunk $chunkIndex upload failed: ${resp.statusCode}'); throw Exception('Chunk $chunkIndex upload failed: ${resp.statusCode}');
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!