def maximum_no_of_tasks(MaxNActive, waitingPeriod):
 
    """maintain a maximum number of active tasks
    
    _source: <NAME>, UNC Postdoc at Global Hydrology Lab, https://github.com/seanyx"""

    time.sleep(10)

    ## initialize submitting jobs
    ts = list(ee.batch.Task.list())

    NActive = 0
    for task in ts:
            if ('RUNNING' in str(task) or 'READY' in str(task)):
                    NActive += 1

    ## wait if the number of current active tasks reach the maximum number
    ## defined in MaxNActive

    while (NActive >= MaxNActive):

            time.sleep(waitingPeriod) # if reach or over maximum no. of active tasks, wait for 2min and check again
            ts = list(ee.batch.Task.list())
            NActive = 0
            for task in ts:
                    if ('RUNNING' in str(task) or 'READY' in str(task)):
                            NActive += 1
    return()