mirror of
https://github.com/C9Glax/tranga.git
synced 2025-09-10 03:48:19 +02:00
Maximum concurrent downloads (too many crashes the application)
This commit is contained in:
@@ -49,6 +49,8 @@ public struct TrangaSettings()
|
|||||||
public Dictionary<RequestType, int> RequestLimits { get; set; } = DefaultRequestLimits;
|
public Dictionary<RequestType, int> RequestLimits { get; set; } = DefaultRequestLimits;
|
||||||
|
|
||||||
public string DownloadLanguage { get; set; } = "en";
|
public string DownloadLanguage { get; set; } = "en";
|
||||||
|
|
||||||
|
public int MaxConcurrentDownloads { get; set; } = 5;
|
||||||
|
|
||||||
public static TrangaSettings Load()
|
public static TrangaSettings Load()
|
||||||
{
|
{
|
||||||
@@ -109,4 +111,10 @@ public struct TrangaSettings()
|
|||||||
this.DownloadLanguage = language;
|
this.DownloadLanguage = language;
|
||||||
Save();
|
Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetMaxConcurrentDownloads(int value)
|
||||||
|
{
|
||||||
|
this.MaxConcurrentDownloads = value;
|
||||||
|
Save();
|
||||||
|
}
|
||||||
}
|
}
|
@@ -24,8 +24,15 @@ public class StartNewChapterDownloadsWorker(TimeSpan? interval = null, IEnumerab
|
|||||||
|
|
||||||
Log.Debug($"Found {missingChapters.Count} missing downloads.");
|
Log.Debug($"Found {missingChapters.Count} missing downloads.");
|
||||||
|
|
||||||
|
// Maximum Concurrent workers
|
||||||
|
int downloadWorkers = Tranga.GetRunningWorkers().Count(w => w.GetType() == typeof(DownloadChapterFromMangaconnectorWorker));
|
||||||
|
int amountNewWorkers = Math.Min(Tranga.Settings.MaxConcurrentDownloads, Tranga.Settings.MaxConcurrentDownloads - downloadWorkers);
|
||||||
|
Log.Debug($"{downloadWorkers} running download Workers. {amountNewWorkers} new download Workers.");
|
||||||
|
IEnumerable<MangaConnectorId<Chapter>> newDownloadChapters = missingChapters.Take(amountNewWorkers);
|
||||||
|
|
||||||
|
|
||||||
// Create new jobs
|
// Create new jobs
|
||||||
List<BaseWorker> newWorkers = missingChapters.Select(mcId => new DownloadChapterFromMangaconnectorWorker(mcId)).ToList<BaseWorker>();
|
List<BaseWorker> newWorkers = newDownloadChapters.Select(mcId => new DownloadChapterFromMangaconnectorWorker(mcId)).ToList<BaseWorker>();
|
||||||
|
|
||||||
return newWorkers.ToArray();
|
return newWorkers.ToArray();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user