I have queuing setup to have a max of 5 downloads and 10 active torrents.
How do I setup queuing so that a stalled torrent doesn't count towards those limits?
Stalled torrents using up queue slots
Re: Stalled torrents using up queue slots
Settings -> Bittorrent -> "Do not count slow torrents in these limits" and then set that up so it fits your needs.
Re: Stalled torrents using up queue slots
Thanks. I am aware of that setting but it's either unclear, doesn't work properly, or I'm not understanding it. For example I have "max of 5 downloads and a max of 10 active torrents", and have the "Do not count slow torrents in these limits" box checked.
The stalled torrents use up the max active slots.

If I bump up the max active torrents to 40, that opens up more download slots, but again, stalled torrents count towards that:

The stalled torrents use up the max active slots.

If I bump up the max active torrents to 40, that opens up more download slots, but again, stalled torrents count towards that:

-
- Newbie
- Posts: 17
- Joined: Wed Jan 15, 2020 11:34 pm
Re: Stalled torrents using up queue slots
I just set it large - about 50.
IIRC years ago slow torrents didn't count towards the maximum (although I might possibly be remembering a different client). I'm guessing it changed to avoid the case where all torrents are active and resources are spread too thinly for anything to be above threshold. I've seen that happen on Azureus and it required manual intervention.
Your values of 5,2,10 don't make much sense either way. In one case you are allowing for only 3 slow torrents, and in the other 10 is greater than 5+2. The point of the old behavior was that you could set something like 5,5,7. When the total active torrents exceeded the limit, seeds would be shut down to allow more upload bandwidth for downloads.
IIRC years ago slow torrents didn't count towards the maximum (although I might possibly be remembering a different client). I'm guessing it changed to avoid the case where all torrents are active and resources are spread too thinly for anything to be above threshold. I've seen that happen on Azureus and it required manual intervention.
Your values of 5,2,10 don't make much sense either way. In one case you are allowing for only 3 slow torrents, and in the other 10 is greater than 5+2. The point of the old behavior was that you could set something like 5,5,7. When the total active torrents exceeded the limit, seeds would be shut down to allow more upload bandwidth for downloads.
Re: Stalled torrents using up queue slots
that's the right behaviour...
source: https://www.libtorrent.org/reference-Se ... tings-packactive_limit is a hard limit on the number of active (auto managed) torrents. This limit also applies to slow torrents.
-
- Newbie
- Posts: 1
- Joined: Mon Jan 16, 2023 4:12 am
Re: Stalled torrents using up queue slots
Hello,
I am resurrecting this old thread because I was not able to find the an answer to this question anywhere online and this is the first thread that comes up when searching this problem. Hopefully this helps someone else, this is a throw away account FYI so unlikely I respond to requests for further assistance or questions about this solution. Works for me but not planning to support it.
The reason that I was attempting to do this is that my download machine has limited disk space, an enormous down pipe and a very small up pipe. This system moves files after downloads are complete to a different location for longer term storage and seeding. Because of this I want to queue up 1 torrent at a time, download the contents and then move on down the line. So if 1 torrent is stalled the previous setup required manual intervention by me to return to orderly 1 by 1 processing. This is because the stalled torrent will fill my 1 allowed queue slot forever. Personally I believe this is a libtorrent bug and that the "do not count slow torrents towards these limits" setting should behave as seems logical and exclude stalled torrents from the "active" count.
I solved this by using bash scripting and the qbittorrent webUI API.
Prerequisites
-this is running on ubuntu linux 20 (I am sure you could get it working on windows but that is beyond the scope of my response)
-you will need to parse json so you will need to install jq (sudo apt-get install jq). I am sure there are other ways to do this but I believe this is the most simple.
-you will need to schedule a bash script to run on a recurring basis (I have mine running every 1 minute)
The bash script and line by line explanation.
I am resurrecting this old thread because I was not able to find the an answer to this question anywhere online and this is the first thread that comes up when searching this problem. Hopefully this helps someone else, this is a throw away account FYI so unlikely I respond to requests for further assistance or questions about this solution. Works for me but not planning to support it.
The reason that I was attempting to do this is that my download machine has limited disk space, an enormous down pipe and a very small up pipe. This system moves files after downloads are complete to a different location for longer term storage and seeding. Because of this I want to queue up 1 torrent at a time, download the contents and then move on down the line. So if 1 torrent is stalled the previous setup required manual intervention by me to return to orderly 1 by 1 processing. This is because the stalled torrent will fill my 1 allowed queue slot forever. Personally I believe this is a libtorrent bug and that the "do not count slow torrents towards these limits" setting should behave as seems logical and exclude stalled torrents from the "active" count.
I solved this by using bash scripting and the qbittorrent webUI API.
Prerequisites
-this is running on ubuntu linux 20 (I am sure you could get it working on windows but that is beyond the scope of my response)
-you will need to parse json so you will need to install jq (sudo apt-get install jq). I am sure there are other ways to do this but I believe this is the most simple.
-you will need to schedule a bash script to run on a recurring basis (I have mine running every 1 minute)
The bash script and line by line explanation.
Code: Select all
#replace the values in [] including removing the [] with values that match your instance this line below authenticates with your instance of qbittorrent and may not be needed if you are ignoring auth for local or not using auth
cookie=$(curl -c - --header 'Referer: http://[qbittorrenthost]:[qbittorrentport]' --data 'username=[qbittorrentuser]&password=[qbittorrentpassword]' http://[qbittorrenthost]:[qbittorrentport]/api/v2/auth/login)
#get a list of torrents that are currently stalled and not complete
stallJSON=$(echo "${cookie}" | curl -b - http://[qbittorrenthost]:[qbittorrentport/api/v2/torrents/info?filter=stalled_downloading)
#extract from that list using jq (package must be installed https://stedolan.github.io/jq/) this line looks for torrents where there are 0 seeds and the torrent has been active for at least 1 hour cumulatively. This is designed to give torrents time to get out of a stall and connect to seeds if they exist
hashdropqueue=$(echo "$stallJSON" | jq -r '.[] | select(.num_seeds == 0) | select(.time_active > 3600) | {hash} | join(",")')
#replace spaces between hashes with | for qbittorrent api syntax not sure why join(",") puts spaces between hashes on multiple results but it does and changing to join("|") does not help so this line is necessary for this script to work in the case that multiple torrents are stalled. For me this should not happen since I have my active torrent slots set to 1 but your config may be different
hashdropqueue=$(echo $hashdropqueue | sed 's/ /|/g')
#move down the queue 1 spot all torrents in list that match the above criteria
echo "${cookie}" | curl -b - -X POST http://[qbittorrenthost]:[qbittorrentport]/api/v2/torrents/decreasePrio -d "hashes=$hashdropqueue"
#This line may not be necessary at all (have not tested if changing prio via the api disables auto management) for my setup I want this on you may want to comment out or delete the below line depending on your setup
echo "${cookie}" | curl -b - -X POST http://[qbittorrenthost]:[qbittorrentport]/api/v2/torrents/setAutoManagement -d 'hashes=$hashdropqueue&enable=true'