[Zope-it] batch: domanda tosta

Glauco glauco@allevatori.com
Tue, 11 Mar 2003 08:58:39 +0100


Guido Notari wrote:

>Dunque, questa è una domanda difficile, vedrò di spiegarmi bene.
>
>Ho bisogno di un prodotto/soluzione per Zope, per realizzare la
>funzionalità di 'batch processing'.
>
>Mi serve cioé qualcosa che si incarichi di gestire una coda di richieste
>verso il database, che non possono essere servite comtemporaneamente, per
>questioni di performance -- questo è un punto fermo.
>
>Il problema è che in Zope ogni REQUEST, dall'inizio alla fine, sta nella
>sua transazione, che viene chiusa solo alla fine della request stessa.
>In più, le transazioni -- e quindi le request -- sono 'serializzate', cioé
>isolate completamente le une dalle altre.
>
>È quindi difficile, con metodi soliti, fare in modo che una request
>richieda l'inizio di una lunga operazione, segnalando altresì alle altre
>eventuali request, sopraggiunte nel frattempo, di accodarsi.
>Questo perché, in ogni caso, i cambiamenti fatti dalla request in corso
>saranno visti dal resto dell'applicazione solo a request conclusa.
>
>Il problema non è banale, e mi piacerebbe sapere se avete qualcosa da
>suggerirmi.
>Ah, a proposito dell'articolo su Zope.it, Gestire l'esecuzione di lunghi
>processi, lo conosco a memoria. Utile, ma non serve proprio a risolvere
>questo problema...
>
>Fatevi sotto
>
>ciao
>Guido
>
>  
>

Sarebbe importante sapere :

1) L'utente che richiede deve rimanere in attesa fino a che non arriva 
una risposta oppure la risposta la puo leggere minuti/ore piu tardi ( 
magari con un link ad un file ad esempio)

2) La risposta puo essere contenuta in un file ( come un documento PDF ) 
oppure DEVE obbligatoriamente essere prelevata all'istante dal DB ( per 
un fatto di "freschezza del dato" ?

3) Quanto puo aspettare un'utente (sec/min/ore) ?

In un problema simile al tuo ma diverso per mole di dati , ho realizzato 
delle funzioni python che interrogano dei Web Services su un 
ApplicationServer non gestito da me e di cui non so nulla delle 
prestazioni,  imposto un TimeOut e se non mi arriva la risposta entro un 
certo tempo la accodo ad una fifo basata su Postgres. Un Demone 
 preriodicamente esegue il pop e la tiene vuota. Quando la risposta è 
disponibile viene visualizzata sulla HP dell'utente.

Glauco