functions – Update Content based on expiration time or queued processing

every hour by cron, I call a function that updates the contents.
If on post have custom field with auto,so work.(to distinguish it from those written manually).

 function aggiorna_dati() {
            $args = array(
                'post_type' => 'post',
                'posts_per_page' => -1 ,
                'post_status'    => 'private'
            );
        
            $articoli = new WP_Query($args);
            if ($articoli->have_posts()):
                while($articoli->have_posts()): $articoli->the_post();    
        $auto = get_post_meta( get_the_ID(), 'auto', true);
        if  ($auto) {
                    funzione_recensione($articoli);
            
        }
        
                endwhile;
            endif;
    
    }

the function are callback by cron with this code:

function dg_cron_schedule_aggiorna_dati() {
    $timestamp = wp_next_scheduled( 'dg_aggiorna_dati' );
    if ( $timestamp == false ) {
        wp_schedule_event( time(), 'hourly', 'dg_aggiorna_dati' );
    }
}
add_action( 'init', 'dg_cron_schedule_aggiorna_dati' );

The problem is that function update all article same time, but this is not possible because the function that generates contents (funzione_recensioni) works with external api,which are limited in number and call / hour frequency.
herefore, I would need to process the queue slowly, for example, four articles every hour, or by setting an expiration date, before regenerating the page, (for example once a day)

thanks to those who can help me