[Python] Io lo so che coem sistemista faccio schifo

enrico franchi enrico.franchi a gmail.com
Gio 19 Mar 2015 22:32:24 CET


2015-03-19 17:10 GMT+00:00 Roberto De Ioris <roberto a unbit.it>:

> Questa e' la loro risposta ufficiale e vabbe'.
>
> Ma ti assicuro che di approcci ce ne erano eccome.
>

Certo che ce ne sono. Ma non c'e' nulla di "banale".


> Ad esempio usare pthread_atfork per rigenerare tutti i thread necessari al
> runtime (lo scavenger e amici).
>

pthread_atfork ricade nella classe di soluzioni ad un problema che sono
esse stesse un problema.
Quando si e' fortunati, almeno il problema originale e' risolto. :)

Poi si, in questo caso sembra abbastanza controllato e si dovrebbe avere la
garanzia che nessun altra libreria sta cazzeggiando con pthread_atfork,
quindi si dovrebbe riuscire a farlo andare.

O poi va detto che pthread_atfork da manuale e' quasi completamente
inutilizzabile se qualcuno ha creato un mutex... fortunatamente le
implementazioni sono in genere piu' ragionevoli.


> Oppure semplicemente fare un wrapper per
> fork() che quando la chiami rigenera tutto il runtime (quello che ad
> esempio fa' uwsgi con gccgo, che pero' e' tutta un'altra bestia)
>
>
> https://github.com/unbit/uwsgi/blob/master/plugins/gccgo/gccgo_plugin.c#L212
>
> Di sicuro roba complicata e che rendeva una parte gia' complessa del
> codice ancora piu' complessa, ma secondo me ne valeva la pena.
>

Anche a me avrebbe lasciato piu' tranquillo. Sinceramente pero' non vedo
molti modi di farlo se non avendo delle (costose) funzioni di cleanup che
forzano il tutto in single-threaded mode ammazzando e pulendo quello che
c'e' da ammazzare e pulire e poi si, rigenerandolo dopo.



> Vabbe' oh, alla fine e' una fissa mia, se ai gopher sta bene cosi' mi
> adatto :)
>

Confesso che quando me ne sono reso conto sono rimasto perplesso.
Ora, onestamente, e' un bel po' che non deployo qualcosa che si
auto-demonizza; e dal momento che lo use case "fork/exec" e' ben coperto e
che semplicemente forkare per fare dei workers in Go non ha troppo senso,
gli use case maggiori per fork sono coperti. Pero' dannazione... ho sempre
avuto fork. Mi sembra di essere in Java.


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150319/8e05e07a/attachment.html>


Maggiori informazioni sulla lista Python