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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-06-14 23:19:25

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

python3. sockety asynchroniczne czy watki

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


[img]http://wiblo.pl/wilk/userbars/debian_user_black.png[/img]

Offline

 

#2  2012-06-15 07:54:13

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: python3. sockety asynchroniczne czy watki

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

 

#3  2012-06-21 23:07:05

  ukasz - Użytkownik

ukasz
Użytkownik
Skąd: wroclaw
Zarejestrowany: 2006-06-21

Re: python3. sockety asynchroniczne czy watki

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


[img]http://wiblo.pl/wilk/userbars/debian_user_black.png[/img]

Offline

 

#4  2012-06-22 02:38:55

  zlyZwierz - Moderator

zlyZwierz
Moderator
Zarejestrowany: 2005-02-18
Serwis

Re: python3. sockety asynchroniczne czy watki

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)


[url=http://www.netfix.pro]www.netfix.pro[/url]

Offline

 

#5  2012-06-22 09:08:31

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: python3. sockety asynchroniczne czy watki

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00108 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.223.160.61' WHERE u.id=1
0.00257 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.223.160.61', 1714857863)
0.00033 SELECT * FROM punbb_online WHERE logged<1714857563
0.00084 SELECT topic_id FROM punbb_posts WHERE id=204384
0.00085 SELECT id FROM punbb_posts WHERE topic_id=21428 ORDER BY posted
0.00084 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=21428 AND t.moved_to IS NULL
0.00011 SELECT search_for, replace_with FROM punbb_censoring
0.00080 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=21428 ORDER BY p.id LIMIT 0,25
0.00092 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=21428
Total query time: 0.0085 s