Twisted. Silnik Twojego Internetu. Jan Urbański wulczer@wulczer.org. Ducksboard. PyWaw #25, Warszawa, 10 czerwca 2013



Podobne dokumenty
Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Instrukcja konfiguracji funkcji skanowania

Mechanizmy pracy równoległej. Jarosław Kuchta

Aplikacja Sieciowa wątki po stronie klienta

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1.

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Złośliwe oprogramowanie Sandrorat (podszywające się pod oprogramowanie Kaspersky) na platformę Android WYNIKI ANALIZY

HermesEX. Dokumentacja serwisowa v

Programowanie Komponentowe WebAPI

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Dokumentacja techniczna API systemu SimPay.pl

SYSTEM MONITORINGU SIECI I SERWERÓW NAGIOS

Studium przypadku Case Study CCNA2-ROUTING. Warianty projektów

Programowanie współbieżne i rozproszone

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Problemy z bezpieczeństwem w sieci lokalnej

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Połączenie VPN Host-LAN SSL z wykorzystaniem przeglądarki. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2. Konto SSL 1.3. Grupa użytkowników

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Klient-Serwer Komunikacja przy pomocy gniazd

Ataki na serwery Domain Name System (DNS Cache Poisoning)

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

TCP - receive buffer (queue), send buffer (queue)

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

PROTOKÓŁ MQTT (uzupełnienie do instrukcji obsługi miernika ND30)

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Przykład połączenie z bazą danych

MODEL WARSTWOWY PROTOKOŁY TCP/IP

TM PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Instrukcja konfiguracji programu Fakt z modułem lanfakt

Platformy Programistyczne Zagadnienia sieciowe i wątki

Gwarancja jakości świadczenia usług (SLA)

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych

CVS system kontroli wersji

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Aukcja trwa od momentu, gdy informacje o przedmiocie są dostępne dla klientów, a kończy się wraz z wysłaniem opisanego dalej komunikatu FINISH_MSG.

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Architektura komputerów

Dokumentacja smsapi wersja 1.4

Komunikator internetowy w C#

Dr Michał Tanaś(

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Bloki anonimowe w PL/SQL

PHP: bloki kodu, tablice, obiekty i formularze

Instrukcja konfiguracji programu Fakt z modułem lanfakt

SIECI KOMPUTEROWE I TECHNOLOGIE INTERNETOWE

INSTRUKCJA OBSŁUGI Wersja: 1.8

Specyfikacja techniczna. mprofi Interfejs API

Obsługa widgetów i aplikacji

Snifery wbudowane w Microsoft Windows

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

TIN Techniki Internetowe zima

Zaawansowany kurs języka Python

Aktywny serwer sieciowy (WMUC-EM):

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Komunikacja pomiędzy S i S7-300/400 przez Ethernet (1)

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Skrócona instrukcja konfiguracji skanowania iwysyłania wiadomości

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Komunikacja z użyciem gniazd aplikacje klient-serwer

IPC: Kolejki komunikatów

Programowanie współbieżne i rozproszone

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Instrukcja realizacji usługi DOŁADOWANIE TELEFONU POPRZEZ WYDRUK KUPONU DOŁADUJĄCEGO

Wykresy i interfejsy użytkownika

Działanie systemu operacyjnego

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Krótka instrukcja instalacji

Możliwość dodawania modułów pozwala na dopasowanie oprogramowania do procesów biznesowych w firmie.

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

SM-EX System Multipłatności - EX

Instrukcja obsługi serwera FTP v

Połączenie VPN SSL Web Proxy. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2. Profile SSL Web Proxy 1.3. Konto SSL 1.4. Grupa użytkowników

INSTRUKCJA OBSŁUGI KAMER

Zadania do wykonania Firewall skrypt iptables

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Wewnętrzna kamera Foscam FI9821W H.264 FI9821W (WLAN, Pan/Tilt, 11IR/8m, IR cut, 720p)

1. Model klient-serwer

Internetowy moduł prezentacji WIZYT KLIENTA PUP do wykorzystania np. na stronie WWW. Wstęp

Transkrypt:

Twisted Silnik Twojego Internetu Jan Urbański wulczer@wulczer.org Ducksboard PyWaw #25, Warszawa, 10 czerwca 2013 Jan Urbański (Ducksboard) Twisted PyWaw #25 1 / 23

1 Co to jest Twisted? Strona techniczna Filozofia 2 Model działania Pętla zdarzeń Jan Urbański (Ducksboard) Twisted PyWaw #25 2 / 23

Zarys Co to jest Twisted? Strona techniczna 1 Co to jest Twisted? Strona techniczna Filozofia 2 Model działania Jan Urbański (Ducksboard) Twisted PyWaw #25 3 / 23

Co to jest Twisted? Programowanie asynchroniczne Strona techniczna wiekszość programów jest ograniczona przez I/O Twisted stara się zmaksymalizować przepustowość przez wykonywanie operacji asynchronicznie w czasie, gdy aplikacja czeka na zakończenie zapytania w bazie danych...... wysyła już zrenderowany szablon innemu klientowi... w czasie, gdy klient odczytuje dane z sieci...... parsuje nagłówki od następnego klienta metoda holywoodzka: nie dzwoń, my zadzwonimy Jan Urbański (Ducksboard) Twisted PyWaw #25 4 / 23

Krótki opis Co to jest Twisted? Strona techniczna biblioteka do pisania programów sieciowych zarówny klientów, jak i serwerów asynchroniczny model działania wsparcie dla wielu protokołów HTTP, FTP, SMTP DNS, NNTP, SSH... i bardziej egzotyczne dużo pomocniczych bibliotek: parsowanie linii poleceń, obsługa wątków itp. Jan Urbański (Ducksboard) Twisted PyWaw #25 5 / 23

Co to jest Twisted? Przykładowe zastosowania Strona techniczna serwer pocztowy, który parsuje pocztę i przesyła ją przez HTTP do innego systemu serwer przyjmujący połączenia WebSockets i wsyłający klientom dane z kolejki AMQP + interfejs administracyjny przez SSH serwer FTP, który publikuje na Twitterze i na kanale jabberowym każdy nowy upload program wyświetlający na tablicy LED najnowsze pytania ze StackOverflow z tagiem Python Jan Urbański (Ducksboard) Twisted PyWaw #25 6 / 23

Zarys Co to jest Twisted? Filozofia 1 Co to jest Twisted? Strona techniczna Filozofia 2 Model działania Jan Urbański (Ducksboard) Twisted PyWaw #25 7 / 23

Co to jest Twisted? Filozofia w kilku słowach Filozofia niespotykany nacisk na jakość kodu jedna z najinteligentniejszych społeczności wolnego oprogramowania dużo interfejsów i dokumentacji, wyłącznie przemyślane decyzje niepowstrzymany, nawet jeśli powolny, marsz ku ideałowi celem jest zniszczenie amerykańskiej waluty promieniami TCP IP Jan Urbański (Ducksboard) Twisted PyWaw #25 8 / 23

Historia Co to jest Twisted? Filozofia Twisted powstaje w połowie 2000 roku Python 2.0 został wydany w październiku 2000 roku PEP8 powstaje w sierpniu 2001 roku moduł logging został zaimportowany do Pythona w listopadzie 2002 roku część projektu Ultima Online 2 początkowo w Javie, kod został szybko przepisany w Pythonie Jan Urbański (Ducksboard) Twisted PyWaw #25 9 / 23

Proces Co to jest Twisted? Filozofia UDQS (Ultimate Quality Development System) każda zmiana w kodzie ma odpowiadający ticket każda zmiana musi być przez kogoś sprawdzona wszystkie zmiany dokonywane są w gałęziach nowy kod wymaga 100% pokrycia testami pełna dokumentacja wszytkich publiczych funkcji i zmiennych niekompatybilne zmiany są zabronione Jan Urbański (Ducksboard) Twisted PyWaw #25 10 / 23

Zarys Model działania Pętla zdarzeń 1 Co to jest Twisted? 2 Model działania Pętla zdarzeń Jan Urbański (Ducksboard) Twisted PyWaw #25 11 / 23

Reaktor Model działania Pętla zdarzeń reaguje na wydarzenia i wywołuje kod użytkownika dane czekające na odczytanie z gniazda sieciowego kliknięcia myszki, dane z klawiatury dane na porcie szeregowym upływ czasu łatwy do zastąpienia dzięki dobrze zdefiniowanym interfejsom różne reaktory używają różnych mechanizmów systemowych select poll, epoll kqueue I/O Completion Ports pętle wydarzeń GTK, Qt Jan Urbański (Ducksboard) Twisted PyWaw #25 12 / 23

Zarys Model działania 1 Co to jest Twisted? 2 Model działania Pętla zdarzeń Jan Urbański (Ducksboard) Twisted PyWaw #25 13 / 23

Abstracja Deferred Model działania Deferred to inaczej Promise albo Future wartość, która nie jest jeszcze gotowa do użycia wynik zapytania do bazy danych rezultat operacji wykonanej w innym wątku lub procesie wykonanie metody na zdalnym obiekcie Deferred mogą wypalić albo zawieść Jan Urbański (Ducksboard) Twisted PyWaw #25 14 / 23

Callbacki i errbacki Model działania do Deferred można dołączyć funkcje callback i errback callback dostaje rezultat operacji, na którą Deferred czekał w razie błędów, sterowanie przechodzi do łańcucha errbacków errback może obsłużyć błąd, albo rzucić go dalej Jan Urbański (Ducksboard) Twisted PyWaw #25 15 / 23

Callbacki i errbacki, cd. Model działania Jan Urbański (Ducksboard) Twisted PyWaw #25 16 / 23

Sterowanie w Model działania jeśli callback zwróci Deferred, wykonanie na niego czeka jeśli callback zawiedzie, sterowanie przekazywane jest do najbliższego errbacku jeśli errback nie zwróci błędu, sterowanie wraca do callbacków wynik Deferred jest wynikiem zwróconym przez ostatni callback Jan Urbański (Ducksboard) Twisted PyWaw #25 17 / 23

Łączenie Model działania połączenie HTTP generuje apytanie do bazy danych... które zwraca identyfikator...... który jest użyty w zapytaniu do memcache...... którego odpowiedź zwraca adres email...... do którego wysyłana jest poczta i zapytanie HTTP się kończy Jan Urbański (Ducksboard) Twisted PyWaw #25 18 / 23

Łączenie, cd Model działania Łańcuch callbacków def handle_request(req): sid = req.cookies.get( session_id ) d = db.query( select id from ppl where sid = %s, sid) d.addcallback(email_from_cache) d.addcallback(send_mail) return d.addcallback(build_response, req) Jan Urbański (Ducksboard) Twisted PyWaw #25 19 / 23

Model działania Łączenie 2, cd Łańcuch callbacków def email_from_cache(user_id): return memcache.get(user_id).addcallback( lambda res: res[ email ]) def send_mail(email): return smtp.send_mail(email, so twisted! ) def build_response(res, req): req.finish(200, sent if res else not sent ) Jan Urbański (Ducksboard) Twisted PyWaw #25 20 / 23

Obsługa błędów Model działania Łańcuch errbacków def handle_request(req): sid = req.cookies.get( session_id ) d = db.query( select id from ppl where sid = %s, sid) d.addcallback(email_from_cache) d.adderrback(not_in_cache) d.addcallback(send_mail) d.addcallback(build_response, req) return d.adderrback(request_failed, req) Jan Urbański (Ducksboard) Twisted PyWaw #25 21 / 23

Obsługa błędów Model działania Łańcuch errbacków def not_in_cache(f): f.trap(noresultfound) return default@example.org def request_failed(f, req): req.finish(500, f.geterrormessage()) Jan Urbański (Ducksboard) Twisted PyWaw #25 22 / 23

Model działania Pytania Dzięki! Pytania? Jan Urbański (Ducksboard) Twisted PyWaw #25 23 / 23