Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
witam
jest sobie api do mikrotika (to takie urzadzenia glownie do wifi) ktore gada po tcp i po wyslaniu komendy odpowiedniej odpowiada. to co chce sie wyslac i to co sie dostaje ma zakodowana dlugosc przed kazdym "slowem". to tak w formie wstepu.
napisalem sobie klase do tegoz api w python3. dziala fajnie robi dokladnie to co chce.
uzywam api do rozrzucania konfiguracji mikrotika.
problem polega na tym ze w przypadku nawet nie skomplikowanej i malej konfiguracji skrypt potrafi mielic nawet 45 minut. ostatnio tak mialem przy okolo 500 hostach. chce to przerobic tak zebym mogl "przejechac" po mikrotikach jak najszybciej. myslalem nad asyncore bo moja aplikacja jest network bound a nie cpu bound. to ja nawiazuje polaczenie i cala zabawa jest ze zdalnym hostem. w asyncore mysle ze moglbym zrobic dla kazdego hosta do ktorego chce sie polaczyc osobna instncje klasy i pozniej asyncore.loop()
drugoe rozwiazanie jest z uzyciem watkow. bardzo wygodne. problem moze sie pojawic pozniej kiedy bede potrzebowal komunikacji pomiedzy glownym watkiem a odpalonymi.
obydwa rozwiazania maja swoje plusy i minusy. jedyne czego chcialbym uniknac to to zebym sie nie "wkopal". tzn aplikacja napewno bedzie sie rozwijala i bedzie poszezana o kolejne funkcjonalnosci. np raportowanie, krotkie podsumowanie tego co zostalo zrobione, upgrade firmware itp.
prosze pomozcie. na co zwracacie uwage i przed czym przestrzegacie ? nie jestem jakims super programista (api pisalem dosyc dlugo) ciagle ucze sie pythona
Offline
Nie znam na tyle pythona by wiedzieć czym siest ansyncore, ale mniejsza o to. Wątki wydają się tu dobrym rozwiązaniem, nie rozumiem czemu oczekujesz problemów z tym związanych. Będziesz łączył się do kilku hostów jednocześnie, czas się skróci, wszystko gra.
Offline
ok moze inaczej.
czesto odradzane jest podejscie do wielowatkowosci. nie wiedziec dlaczego ?
teraz mam inny problem z pythonem. mianowicie logging. jak filtrowac logi na podstawie modulu z ktorego pochodza i levelu
Offline
Napisalem sobie taki scyzoryk do mietkow juz ponad rok temu, klasa API jest rozwinieciem exampla z mietkowego wiki.
Żeby zachować uniwersalność (2.9 - 5.x), z API zrezygnowałem na korzyść SSH.
Spinam to do kupy razem z pysnmp - jako dopełnienie zajebistości :)
Robię to w wątkach i jest ok :)
Thread pool ustawiam w zależności od łącza i maszyny np na 20 workerów i dzida..
Glowne zastosowanie: backupy, wrzucanie skryptow, drobne modyfikacje konfiga (ntp,syslog, snmp trap, klucze ssh)
Asyncore widze raczej jako serwer (mietki robią pull), a Ty potrzebujesz od siebie zrobic push - czyli zainicjowac akcję, wiec raczej wątki..
Pozdrawiam
Ostatnio edytowany przez zlyZwierz (2012-06-22 02:41:54)
Offline
Co do logowania "logging python" > google i masa wyników. Np. http://onlamp.com/pub/a/python/2005/06/02/logging.html . Niezbyt aktualne, chcesz coś nowszego poszukaj, w dokumentcji powinno być.
Offline
Strony: 1