zc.monitor yra serveris, kuris suteikia komandinės eilutės sąsaja prašyti įvairių bitai informacija & nbsp;. Serveris zc.ngi pagrįstas, todėl mes galime naudoti zc.ngi testavimo infrastruktūra parodyti ją.
& Nbsp; >>> import zc.ngi.testing
& Nbsp; >>> import zc.monitor
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
Serveris palaiko išplėstine rinkinį komandas. Atrodo iki komandas kaip pavadintas zc.monitor.interfaces.IMonitorPlugin "komunalinės paslaugos", kaip apibrėžta zope.component paketą.
Norėdami pamatyti šį, mes sukurti Hello įskiepį:
& Nbsp; >>> def labas (ryšys, vardas = "pasaulio"):
& Nbsp; ... "" "Pasisveikinkite
& Nbsp; ...
& Nbsp; ... Pateikite pavadinimą, jei nesate pasaulyje.
& Nbsp; ... "" "
& Nbsp; ... connection.write ("! Sveiki% s nice to meet ya n"% pavadinimas)
ir jį užregistruoti:
& Nbsp; >>> zc.monitor.register (labas)
Kai mes užregistruoti komandą, mes galime suteikti vardą. Norėdami pamatyti šį, mes registruotis hello again:
& Nbsp; >>> zc.monitor.register (labas, "Hi")
Dabar mes galime suteikti Hello komandą į serverį:
& Nbsp; >>> connection.test_input ("Hi n")
& Nbsp; Sveiki pasaulis, nice to meet ya!
& Nbsp; -> Uždaryti
Mes galime perduoti vardas:
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
& Nbsp; >>> connection.test_input ("Hello Jim n")
& Nbsp; Sveiki Jim, nice to meet ya!
& Nbsp; -> Uždaryti
Serveris ateina su keletą pagrindinių komandų. Leiskite juos užregistruoti, kad mes galime pamatyti, ką jie daro. Mes naudosime simplfied registracijos sąsaja:
& Nbsp; >>> zc.monitor.register_basics ()
Pirmoji pagalba komandą. Suteikti pagalbą be įėjimo, suteikia galimų komandų sąrašą:
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
& Nbsp; >>> connection.test_input ("pagalba n")
& nbsp; Palaikomos komandos:
& Nbsp; Sveiki - pasisveikinti
& Nbsp; Pagalba - Gauti pagalbos apie serverio komandas
& Nbsp; Hi - pasisveikinti
& Nbsp; interaktyvi - Įjunkite monitoriaus interaktyviu režimu
& Nbsp; mesti - Baigti monitorių
& Nbsp; -> Uždaryti
Mes galime gauti išsamią pagalbos, nurodant komandų vardas:
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
& Nbsp; >>> connection.test_input ("Pagalba Pagalba n")
& Nbsp; Pagalba pagalba:
& Nbsp;
& Nbsp; Gauk pagalbos apie serverio komandas
& Nbsp;
& Nbsp; Pagal nutylėjimą, komandų ir santraukų sąrašas spausdinti. Suteikti
& Nbsp; komandos pavadinimas gauti išsamią dokumentaciją komandą.
& Nbsp;
& Nbsp; -> Uždaryti
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
& Nbsp; >>> connection.test_input ("Pagalba labas n")
& Nbsp; Pagalba labas:
& Nbsp;
& Nbsp; Pasisveikinkite
& Nbsp;
& Nbsp; Pateikite pavadinimą, jei nesate pasaulyje.
& Nbsp;
& Nbsp; -> Uždaryti
Interaktyvus komanda išjungia monitorių į interaktyviu režimu. Kaip matyti iš pirmiau, monitorius paprastai reaguoja į vieną komandą ir tada uždaro ryšį. Į "interaktyviu režimu", ryšys yra ne uždaryti iki mesti komanda naudojama. Tai gali būti naudinga, kai prieiga prie monitoriaus per telnet diagnostikai.
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
& Nbsp; >>> connection.test_input ("interaktyvus n")
& Nbsp; Interaktyvus režimą. Naudokite "mesti", kad išeitumėte.
& Nbsp; >>> connection.test_input ("padėti interaktyvų n")
& Nbsp; Pagalba interaktyvus:
& Nbsp;
& Nbsp; Įjunkite monitoriaus interaktyviu režimu
& Nbsp;
& Nbsp; Paprastai monitorius spaudai ryšį po vieną komandą.
& Nbsp; Įvesdami interaktyvų režimą, monitorius nebus baigti ryšį
& Nbsp; iki įvesite "mesti" komandą.
& Nbsp;
& Nbsp; interaktyviu režimu, tuščia eilutė pakartoja paskutinį komandą.
& Nbsp;
& Nbsp; >>> connection.test_input ("padėti mesti n")
& Nbsp; Pagalba mesti:
& Nbsp;
& Nbsp; Baigti monitorių
& Nbsp;
& Nbsp; tai tik tikrai naudingos interaktyviu režimu (žr "interaktyvus"
& Nbsp; komanda).
& Nbsp;
Atkreipkite dėmesį, kad iš komandų rezultatas nesibaigė "-> Close", kuri būtų nurodyta uždarą ryšį.
Taip pat pastebėsite, kad interaktyvus režimas leidžia pakartoti komandas.
& Nbsp; >>> connection.test_input ("Hello n")
& Nbsp; Sveiki pasaulis, nice to meet ya!
& Nbsp; >>> connection.test_input (" n")
& Nbsp; Sveiki pasaulis, nice to meet ya!
& Nbsp; >>> connection.test_input ("Hello Jim n")
& Nbsp; Sveiki Jim, nice to meet ya!
& Nbsp; >>> connection.test_input (" n")
& Nbsp; Sveiki Jim, nice to meet ya!
Dabar mes naudosime mesti uždaryti ryšį.
& Nbsp; >>> connection.test_input ("mesti n")
& Nbsp; Sudie.
& Nbsp; -> Uždaryti
Galiausiai, verta pastebėti, kad išimtys sukurs apie ryšį pėdsakų.
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
& Nbsp; >>> connection.test_input ("Hello Jimas 42 n") # doctest + daugtaškis
& Nbsp; Traceback (naujausia skambutis paskutinis):
& Nbsp; ...
& Nbsp; TypeError: Sveiki () trunka ne dauguma 2 argumentai (3 suteikta)
& Nbsp;
& Nbsp; -> Uždaryti
Komandinės kilpos
Naudojant "daugiau" režimą, komandos gali reikšti, kad jie nori teigti, visą būsimą vartotojo įvestį. Mes įgyvendinti kvailas pavyzdys parodyti, kaip ji veikia.
Štai komandą, vykdanti skaičiuoklė.
& Nbsp; "." >>> SKUBI =
& Nbsp; >>> def Calc (ryšys, * args):
& Nbsp; ... jei args ir args [0] == "mesti":
& Nbsp; ... grįžti zc.monitor.QUIT_MARKER
& Nbsp; ...
& Nbsp; ... jei ARG:
& Nbsp; ... connection.write (. G (eval ("prisijungti (args))))
& Nbsp; ... connection.write (" n")
& Nbsp; ...
& Nbsp; ... connection.write (SKUBI)
& Nbsp; ... grįžti zc.monitor.MORE_MARKER
Jei mes užsiregistruoti šią komandą ...
& Nbsp; >>> zc.monitor.register (Calc)
... Mes galime remtis, ir mes gauti eilutę.
& Nbsp; >>> ryšys = zc.ngi.testing.TextConnection ()
& Nbsp; >>> serveris = zc.monitor.Server (ryšys)
& Nbsp; >>> connection.test_input (Calc n ")
& Nbsp ;.
Jei mes tada suteikti jai daugiau įvesties mes gauname rezultatą plius dar eilutę.
& Nbsp; >>> connection.test_input (2 + 2 n ")
& Nbsp; 4
& Nbsp ;.
& Nbsp; >>> connection.test_input (4 * 2 n ")
& Nbsp; 8
& Nbsp ;.
Kai baigsime mes galime pasakyti skaičiuoklė eikime.
& Nbsp; >>> connection.test_input ("mesti n")
& Nbsp; -> Uždaryti
Pradėti serverį
& Nbsp; >>> import laikas
& Nbsp; >>> import zope.testing.loggingsupport, medienos ruoša
& Nbsp; >>> loghandler = zope.testing.loggingsupport.InstalledHandler (
& Nbsp; ... Nėra, lygis = logging.INFO)
& Nbsp; >>> zc.monitor.start (9644)
& Nbsp; (", 9644)
& Nbsp; >>> print loghandler
& Nbsp; zc.ngi.async.server INFORMACIJA
& Nbsp; klausytis (", 9644)
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Nėra
& Nbsp; >>> time.sleep (0.1)
& Nbsp; >>> loghandler.clear ()
& Nbsp; >>> zc.monitor.start (("127.0.0.1", 9644))
& Nbsp; ("127.0.0.1", 9644)
& Nbsp; >>> print loghandler
& Nbsp; zc.ngi.async.server INFORMACIJA
& Nbsp; klausytis ("127.0.0.1", 9644)
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Nėra
& Nbsp; >>> time.sleep (0.1)
Suriškite į uostą 0:
& Nbsp; >>> adr = zc.monitor.start (0)
& Nbsp; >>> adr == zc.monitor.last_listener.address
& Nbsp; Tiesa
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Nėra
& Nbsp; >>> time.sleep (0.1)
Bando naujų eisite į naudojimo uosto:
& Nbsp; >>> loghandler.clear ()
& Nbsp; >>> zc.monitor.start (("127.0.0.1", 9644))
& Nbsp; ("127.0.0.1", 9644)
& Nbsp; >>> zc.monitor.start (("127.0.0.1", 9644))
& Nbsp; Neteisingų
& Nbsp; >>> print loghandler
& Nbsp; zc.ngi.async.server INFORMACIJA
& Nbsp; klausytis ("127.0.0.1", 9644)
& Nbsp; zc.ngi.async.server ĮSPĖJIMAS
& Nbsp; negali klausytis ("127.0.0.1", 9644)
& Nbsp; šaknis ĮSPĖJIMAS
& Nbsp; negali pradėti zc.monitor serverį, nes adresas (127.0.0.1 ", 9644) yra naudojamas.
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Nėra
& Nbsp; >>> time.sleep (0.1)
& Nbsp; >>> loghandler.uninstall ()
Kas naujo , šioje laidoje:
- Kai privalomas monitorius Unix domenas lizdas, pašalinti esamą lizdą tuo pačiu keliu, todėl įpareigoti yra sėkminga. Tai gali paveikti esamą naudojimą atsižvelgiant į zopectl derinimo elgesį, bet bus labiau nuspėjamos.
Kas naujo versijos 0.3.0:
- Pridėta supaprastintą registravimo sąsaja .
Reikalavimai :
- Python
Komentarai nerastas