[Python] Python C ext: interfaccia asincrona basata sulla libreria Picoev
Alessandro Agosto
the.6one6 a gmail.com
Lun 31 Maggio 2010 17:20:36 CEST
Mi spiace spammare, ma sono due ore che ho risolto il problema e speravo di
avere altre news o un server funzionale per mostrarvelo in funzione,
comunque... i problemi non sono finiti :D
La funzione viene ora eseguita a dovere.
All'inizio doveva esserci un problema nella loop_once, che ora è stabile e
dereferenzia gli oggetti creati temporaneamente.
Ho quindi notato che la PyObject_CallFunctionObjArgs restituisce il valore
della funzione eseguita e fin qui tutto ok, dato che la callback non
restituisce alcunchè l'asserzione NULL == res (dove res è il risultato della
chiamata della callback) risulta vera e quindi nel debug mi mostrava la
scritta ("cannot call the function"). Ho quindi risolto controllando se
viene restituito un valore, se si lo dereferenzio (dato che non mi serve a
niente), altrimenti semplicemente conclude li e ritorna al loop_once.
Ho anche notato che con una accept sulla socket del server l'evento READ
viene (apparentemente) rimosso, non si ripete all'infinito (come
sospettavo), ma devo migliorare un paio di cosette per permettere alla
callback di ottenere come parametro il socket del server (evitando la
necessità di variabili globali), gli eventi (per controllare il TIMEOUT)
oltre che il classico argomento di callback e quindi testare il tutto questa
volta con un server funzionante per verificare altri bug.
Ho notato anche che pyev effettua dei controlli sul GIL (l'autore dice nei
commenti di voler sapere esattamente cosa accade nei 100 opcode) e penso che
quello sia un supporto al multithreading, cosa che per ora, non posso
garantire vista l'ancora instabile interfaccia. Un passo alla volta.
--
Alessandro A.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20100531/334b4897/attachment.htm
Maggiori informazioni sulla lista
Python