zc.monitor

Software screenshot:
zc.monitor
Software informatie:
Versie: 0.3.1
Upload datum: 14 Apr 15
Ontwikkelaar: Jim Fulton
Licentie: Gratis
Populariteit: 1

Rating: nan/5 (Total Votes: 0)

zc.monitor is een server die een command-line interface biedt om verschillende stukjes informatie & nbsp vragen;. De server is zc.ngi gebaseerd, zodat wij de zc.ngi testen infrastructuur te gebruiken om het te demonstreren.
& Nbsp; >>> import zc.ngi.testing
& Nbsp; >>> import zc.monitor
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
De server ondersteunt een uitbreidbare set opdrachten. Het zoekt opdrachten als genoemd zc.monitor.interfaces.IMonitorPlugin "utilities", zoals gedefinieerd door de zope.component pakket.
Om dit te zien, zullen we een hello plugin te maken:
& Nbsp; >>> def hallo (aansluiting, naam = 'wereld'):
& Nbsp; ... "" "Zeg hallo
& Nbsp; ...
& Nbsp; ... Geef een naam als je de wereld niet.
& Nbsp; ... "" "
& Nbsp; ... connection.write ("! Hallo% s, leuk om je te ontmoeten n"% name)
en registreer deze:
& Nbsp; >>> zc.monitor.register (hallo)
Wanneer we registreer een commando, kunnen we een naam op te geven. Om dit te zien, zullen we opnieuw te registreren hello:
& Nbsp; >>> zc.monitor.register (hallo, 'hi')
Nu kunnen we de hallo-opdracht naar de server te geven:
& Nbsp; >>> connection.test_input ('hi n')
& Nbsp; Hallo wereld, leuk om je te ontmoeten!
& Nbsp; -> CLOSE
We kunnen een naam doorgeven:
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
& Nbsp; >>> connection.test_input ('hallo Jim n')
& Nbsp; Hallo Jim, leuk om je te ontmoeten!
& Nbsp; -> CLOSE
De server wordt geleverd met een paar eenvoudige commando's. Laten we ze vastleggen zodat we kunnen zien wat ze doen. We zullen de simplfied registratie-interface te gebruiken:
& Nbsp; >>> zc.monitor.register_basics ()
De eerste is de opdracht help. Hulp geven zonder input, geeft een lijst met beschikbare opdrachten:
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
& Nbsp; >>> connection.test_input ('help n')
& Nbsp; ondersteunde opdrachten:
& Nbsp; hallo - Say hello
& Nbsp; help - Roep de hulp over server commando's
& Nbsp; hi - Say hello
& Nbsp; interactief - Zet op een interactieve modus monitor
& Nbsp; quit - Sluit de monitor
& Nbsp; -> CLOSE
We kunnen gedetailleerde hulp krijgen door het opgeven van een naam van de opdracht:
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
& Nbsp; >>> connection.test_input ('help help n')
& Nbsp; Hulp voor hulp:
& Nbsp;
& Nbsp; Roep de hulp over server commando's
& Nbsp;
& Nbsp; Standaard wordt een lijst met opdrachten en samenvattingen wordt afgedrukt. Voorzien
& Nbsp; naam van een commando om gedetailleerde documentatie voor een opdracht te krijgen.
& Nbsp;
& Nbsp; -> CLOSE
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
& Nbsp; >>> connection.test_input ('hulp hallo n')
& Nbsp; Hulp voor hello:
& Nbsp;
& Nbsp; Zeg hallo
& Nbsp;
& Nbsp; Geef een naam als je de wereld niet.
& Nbsp;
& Nbsp; -> CLOSE
De interactieve commando schakelt de monitor in de interactieve modus. Zoals hierboven te zien, de monitor reageert meestal op een enkel commando en dan sluit de verbinding. In de "interactieve modus", wordt de verbinding niet gesloten tot het quit commando wordt gebruikt. Dit kan handig zijn bij het openen van de monitor via telnet voor diagnostiek.
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
& Nbsp; >>> connection.test_input ('interactieve n')
& Nbsp; de interactieve modus op. Gebruik "quit" Om te verlaten.
& Nbsp; >>> connection.test_input ('helpen interactieve n')
& Nbsp; Hulp voor interactief:
& Nbsp;
& Nbsp; Zet op een interactieve modus monitor
& Nbsp;
& Nbsp; Normaal, de monitor geeft de verbinding na een enkel commando.
& Nbsp; Door het invoeren van de interactieve modus, de monitor zal niet eindigen de verbinding
& Nbsp; tot u de "quit" commando in te voeren.
& Nbsp;
& Nbsp; In de interactieve modus, een lege regel herhaalt de laatste opdracht.
& Nbsp;
& Nbsp; >>> connection.test_input ('helpen stoppen n')
& Nbsp; Hulp bij stoppen:
& Nbsp;
& Nbsp; Sluit de monitor
& Nbsp;
& Nbsp; Dit is pas echt nuttig in de interactieve modus (zie de "interactieve"
& Nbsp; commando).
& Nbsp;
Merk op dat het resultaat van de opdrachten niet eindigen met "-> CLOSE", die zou hebben aangegeven een gesloten verbinding.
Merk ook op dat de interactieve modus kunt u commando's te herhalen.
& Nbsp; >>> connection.test_input ("hallo n ')
& Nbsp; Hallo wereld, leuk om je te ontmoeten!
& Nbsp; >>> connection.test_input (' n')
& Nbsp; Hallo wereld, leuk om je te ontmoeten!
& Nbsp; >>> connection.test_input ('hallo Jim n')
& Nbsp; Hallo Jim, leuk om je te ontmoeten!
& Nbsp; >>> connection.test_input (' n')
& Nbsp; Hallo Jim, leuk om je te ontmoeten!
Nu gebruiken we stoppen om de verbinding te verbreken.
& Nbsp; >>> connection.test_input ('quit n')
& Nbsp; Goodbye.
& Nbsp; -> CLOSE
Tenslotte is het vermeldenswaard dat uitzonderingen een traceback op de verbinding zal genereren.
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
& Nbsp; >>> connection.test_input ('hallo Jim 42 n ") # doctest: + Ellipsis
& Nbsp; Traceback (meest recente oproep vorige):
& Nbsp; ...
& Nbsp; TypeError: hello () neemt hooguit 2 argumenten (3 gegeven)
& Nbsp;
& Nbsp; -> CLOSE
Commando lussen
Met behulp van de "MORE" modus kunt commando's te geven dat ze willen alle toekomstige invoer van de gebruiker te vorderen. We zullen een domme voorbeeld om aan te tonen hoe het werkt implementeren.
Hier is een commando dat een rekenmachine implementeert.
& Nbsp; '.' >>> PROMPT =
& Nbsp; >>> def calc (aansluiting, * args):
& Nbsp; ... als args en args [0] == 'quit':
& Nbsp; ... terug zc.monitor.QUIT_MARKER
& Nbsp; ...
& Nbsp; ... als args:
& Nbsp; ... connection.write (. Str (eval ('' join (args))))
& Nbsp; ... connection.write (' n')
& Nbsp; ...
& Nbsp; ... connection.write (PROMPT)
& Nbsp; ... terug zc.monitor.MORE_MARKER
Als we registreert deze opdracht ...
& Nbsp; >>> zc.monitor.register (CALC)
... Wij kunnen het aanroepen en we krijgen een prompt.
& Nbsp; >>> verbinding = zc.ngi.testing.TextConnection ()
& Nbsp; >>> server = zc.monitor.Server (verbinding)
& Nbsp; >>> connection.test_input ('calc n')
& Nbsp ;.
Als we dan geef het meer input te krijgen we het resultaat plus nog een prompt.
& Nbsp; >>> connection.test_input ('2 + 2 n')
& Nbsp; 4
& Nbsp ;.
& Nbsp; >>> connection.test_input ('4 * 2 n')
& Nbsp; 8
& Nbsp ;.
Zodra we klaar zijn we de rekenmachine kunnen vertellen om ons te laten gaan.
& Nbsp; >>> connection.test_input ('quit n')
& Nbsp; -> CLOSE
Start server
& Nbsp; >>> import tijd
& Nbsp; >>> import zope.testing.loggingsupport, logging
& Nbsp; >>> LogHandler = zope.testing.loggingsupport.InstalledHandler (
& Nbsp; ... Geen, level = logging.INFO)
& Nbsp; >>> zc.monitor.start (9644)
& Nbsp; ('', 9644)
& Nbsp; >>> print LogHandler
& Nbsp; zc.ngi.async.server INFO
& Nbsp; luisteren op ('', 9644)
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Geen
& 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 INFO
& Nbsp; luisteren op ('127.0.0.1', 9644)
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Geen
& Nbsp; >>> time.sleep (0,1)
Binden aan poort 0:
& Nbsp; >>> addr = zc.monitor.start (0)
& Nbsp; >>> addr == zc.monitor.last_listener.address
& Nbsp; True
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Geen
& Nbsp; >>> time.sleep (0,1)
Proberen om opnieuw binden aan een haven in gebruik:
& 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; Valse
& Nbsp; >>> print LogHandler
& Nbsp; zc.ngi.async.server INFO
& Nbsp; luisteren op ('127.0.0.1', 9644)
& Nbsp; zc.ngi.async.server WAARSCHUWING
& Nbsp; niet in staat op te luisteren ('127.0.0.1', 9644)
& Nbsp; wortel WAARSCHUWING
& Nbsp; niet in staat om zc.monitor server te starten omdat het adres ('127.0.0.1', 9644) in gebruik is.
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = Geen
& Nbsp; >>> time.sleep (0,1)
& Nbsp; >>> loghandler.uninstall ()

Wat is nieuw in deze release:

  • Bij het binden van de monitor aan op een Unix-domein socket, verwijdert u een bestaande aansluiting op hetzelfde pad zodat de bind succesvol is. Dit kan bestaande gebruik beïnvloeden met betrekking tot debug gedrag zopectl, maar zal meer voorspelbaar zijn.

Wat is nieuw in versie 0.3.0:

  • Toegevoegd een vereenvoudigde registratie-interface
  • .

Eisen

  • Python

Vergelijkbare software

Andere software van ontwikkelaar Jim Fulton

zc.s3uploadqueue
zc.s3uploadqueue

20 Feb 15

zc.resumelb
zc.resumelb

20 Feb 15

zc.zope3recipes
zc.zope3recipes

14 Apr 15

Reacties op zc.monitor

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!