[python] Roboti, REST, Flask?
Pavel Schön
pavel na schon.cz
Úterý Září 29 16:28:39 CEST 2015
Moje knihovna nikdy nebyla nasazena v produkci, je to ciste experimentalni zalezitost, hricka pro studijni ucely. Autor puvodniho dotazu hleda neco pro studijni a vyukove ucely, pokud se nepletu.
Server si v zadnem pripade nepamatuje stav zamku pri restartu, klientska cast neresi vypadky spojeni, neimplementuje reconnect apod. Pokud nastane chyba v TCP, na strane klienta se vyhodi vyjimka socket.error a je jen na nem, jak se zachova.
Knihovna take neresi deadlock, ale to ani normalni threading neresi deadlocky. Jejich predchazeni je uz mimo ramec teto diskuze.
BTW, nad jednoduchym lockem lze stavet vyssi primitiva, semafory apod.
Dne úterý 29. září 2015 15:51:15 UTC+2 Petr Messner napsal(a):
> Zajímavý kus kódu. Co se stane, když se server restartuje, zůstane stav zámků zachován? Co se stane, když klient požádá o acquire a musí čekat, protože zámek má již někdo jiný, ale zrovna v tu chvíli vypadne síť, spojení se ukončí a recv() vrátí prázdný řetězec?
>
>
> Když už řešit zamykání takhle síťově, tak aspoň pořádně :) Viz např. Redis (http://antirez.com/news/77) Apache Zookeeper, Apache Helix...
>
>
> Bohužel, distribuované algoritmy nejsou tak jednoduché, že by do "normálního" algoritmu stačilo přidat sokety.
>
>
> PM
>
>
> Dne 29. září 2015 15:30 Pavel Schön <pa... na schon.cz> napsal(a):
> Ahoj,
>
>
>
> dovolim si navrhnout pure python reseni na strane serveru zalozene na threadingu a lockach. Kdysi jsem napsal jednoduchy lock manager. Viz:
>
>
>
> http://code.activestate.com/recipes/578194-distributed-lock-manager-for-python/
>
>
>
> Ve zkratce:
>
>
>
> - na serveru bezi TCP daemon (./dlm.py), ktery obsluhuje klienty.
>
> - na klienty umistis tentyz soubor dlm.py, ktery si klientska aplikace importne a vola podle potreby.
>
>
>
> Aplikace potom funguje velmi podobne, jako bys programoval s mutexy.
>
>
>
> _______________________________________________
>
> Python mailing list
>
> pyt... na py.cz
>
> http://www.py.cz/mailman/listinfo/python
>
>
>
> Visit: http://www.py.cz
Další informace o konferenci Python