Вы можете сделать его неблокирующим, просто не делая блокирующих вызовов внутри вашей функции. Если вы хотите, чтобы время ожидания истекло, просто оберните неблокирующие вызовы, которые вы делаете, в небольшой код, который получает и проверяет время, прошедшее с момента вызова функции.