Portál AbcLinuxu, 11. června 2024 06:51


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
12.9.2016 11:56 Cabrón
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
Odpovědět | Sbalit | Link | Blokovat | Admin
Po zmene súboru reaguje čakaním 0.1s (neviem ako iné editory, ale vim ukladá najskôr do dočasného súboru a následne premenuje súbor, takže je to taký hack aby nedošlo k race condition)
To je pořád race condition, jen s o 0.1 s menší citlivostí :-)

Lepším řešením by bylo (pokud to watchdog API umožňuje) dočasné soubory filtrovat (např. ignorovat basename ".goutputstream-*" pro GIO-based editory jako Gedit nebo Geany).
mirec avatar 12.9.2016 12:10 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django

Myslím, že väčšina editorov ukladá s dočasnou príponou a ja kontrolujem .py súbory, takže toto problém robiť nebude aj keď dám čas 0. Ošetrenie je skôr pre prípady keď sa uloží viacej súborov naraz, alebo sa vygeneruje adresár s novou app (django-admin.py startapp vytvára asi 4 súbory "naraz").

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
12.9.2016 19:31 chrono
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
Entr to rieši tak, že danú činnosť spúšťa až po tom, ako sa prestanú súbory na nejaký čas meniť (konkrétne pre takýto prípad je použitá 1ms).

Inak napr. server, ktorý je vo werkzeug, môže tiež používať knižnicu watchdog a problémy so súbehom nerieši nijako (len sa medzi každou kontrolou spí minimálne 1 sekundu).
13.9.2016 00:28 Cabrón
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
1 ms je strašně málo, na běžným desktopu je jenom seek time disků v desítkách ms, a v zátěži (hlavně IO, např. při kopírování hodně dat) to může vylítnout i do jednotek sekund.
mirec avatar 13.9.2016 09:04 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django

Vďaka za pripomienky. Upravil som skript aby fungoval rovnako + pridal som parameter reload_wait_time (dá sa vložiť do konfiguračného súboru, alebo pri každom spustení príkazu), ktorým sa nastavuje príslušný interval.

O reloade vo werkzeugu viem, len akosi s djangom to nefunguje moc dobre. Používal som django_extensions, doinštaloval som watchdog, pri štarte to vypísalo pekne, že využíva inotify reloader, ale aj tak to žralo cca 5% CPU permanentne, čo pri práci vonku na baterke neakceptujem ;-)

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
12.9.2016 19:20 chrono
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
Kontrola a použitie súborov neprebieha v rovnakom čase, takže problémy súbehu tam budú vždy.
22.9.2016 19:56 Jindřich Makovička | skóre: 17
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
Odpovědět | Sbalit | Link | Blokovat | Admin
Django mimochodem od verze 1.8 inotify používá, pokud je nainstalované pyinotify. Viz autoreload.py.
mirec avatar 24.9.2016 08:08 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django

Poznám, len neviem, či je to bug alebo funkcia, ale s runserver_plus síce vypíše, že používa inotify reloader, ale pritom stále kontroluje súbory každú sekundu. Tiež sa mi nezdá práve najšťastnejšie registrovať inotify pre všetky použité knižnice. Momentálne používam na virtualenv squashfs pripájaný cez squashfuse a registrácia inotify tam trvá okolo 10s.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.