You don't need to use put_nowait here. The put call will only block if there is a limit on the queue and there are no more free slots. However, the download_q was initialized to be limitless (i.e. infinite)