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 string DownloadLanguage { get; set; } = "en";
|
||||
|
||||
public int MaxConcurrentDownloads { get; set; } = 5;
|
||||
|
||||
public static TrangaSettings Load()
|
||||
{
|
||||
@@ -109,4 +111,10 @@ public struct TrangaSettings()
|
||||
this.DownloadLanguage = language;
|
||||
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.");
|
||||
|
||||
// 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
|
||||
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();
|
||||
}
|
||||
|
Reference in New Issue
Block a user