zc.monitor е сървър, който осигурява интерфейс на командния ред, за да поискат различна информация & Nbsp;. Сървърът е zc.ngi базирани, така че ние може да използва инфраструктурата на zc.ngi тестове, за да го докаже.
& Nbsp; >>> внос zc.ngi.testing
& Nbsp; >>> внос zc.monitor
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
Сървърът поддържа разтегателен набор от команди. Той поглежда нагоре команди като именувани zc.monitor.interfaces.IMonitorPlugin "Ютилитис", както е определено от пакета за zope.component.
За да видите това, ние ще създадем здравей плъгин:
& Nbsp; >>> Def Здравейте (връзка, име = "свят"):
& Nbsp; ... "" "Кажи здравей
& Nbsp; ...
& Nbsp; ... Представете име, ако не сте в света.
& Nbsp; ... "" "
& Nbsp; ... connection.write ("! Hi% S, е хубаво да се запознаем Н" Име%)
и тя се регистрирате:
& Nbsp; >>> zc.monitor.register (здравей)
Когато се регистрирате команда, ние можем да осигурим едно име. За да видите това, ние ще се регистрирайте Здравейте отново:
& Nbsp; >>> zc.monitor.register (здравей, "здрасти")
Сега ние можем да дадем командата здравей на сървъра:
& Nbsp; >>> connection.test_input ("здрасти Н")
& Nbsp; Hi свят, е хубаво да се запознаем!
& Nbsp; -> CLOSE
Ние можем да минем по име:
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
& Nbsp; >>> connection.test_input ("здравей Джим Н")
& Nbsp; Hi Джим, приятно да се запознаем!
& Nbsp; -> CLOSE
Сървърът идва с няколко основни команди. Нека да ги регистрират, така че ние можем да видим това, което правят. Ще използваме ОПРОСТЕНАТА регистрация интерфейса:
& Nbsp; >>> zc.monitor.register_basics ()
Първият е на помощ за команда. Оказване на помощ, без вход, дава списък на наличните команди:
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
& Nbsp; >>> connection.test_input ("помощ Н")
& Nbsp; поддържаните команди:
& Nbsp; здравей - Say Hello
& Nbsp; помощ - Получаване на помощ за сървърни команди
& Nbsp; хай - Say Hello
& Nbsp; интерактивна - Включете интерактивен режим на монитора
& Nbsp; откажат - Спиране на монитора
& Nbsp; -> CLOSE
Ние може да получите подробна помощ, като се посочва името на командата:
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
& Nbsp; >>> connection.test_input ("Помощ Помощ Н")
& Nbsp; Помощ за помощ:
& Nbsp;
& Nbsp; Помощ за сървърни команди
& Nbsp;
& Nbsp; По подразбиране списък на команди и обобщения се отпечатва. Осигурете
& Nbsp; име на команда, за да получите подробна документация за команда.
& Nbsp;
& Nbsp; -> CLOSE
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
& Nbsp; >>> connection.test_input ("помощ здравей Н")
& Nbsp; Помощ за здравей:
& Nbsp;
& Nbsp; Поздрави
& Nbsp;
& Nbsp; Осигуряване на името, ако не сте в света.
& Nbsp;
& Nbsp; -> CLOSE
Интерактивният команда превключва монитора в интерактивен режим. Както се вижда по-горе, на монитора обикновено реагира на една команда и след това се затваря връзката. В "интерактивен режим", връзката не е затворена, докато се използва откажат команда. Това може да бъде полезно при достъп до монитора чрез Telnet за диагностика.
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
& Nbsp; >>> connection.test_input ("интерактивна Н")
& Nbsp; интерактивен режим на. Използвайте "Quit" за да излезете.
& Nbsp; >>> connection.test_input ("помогне интерактивна Н")
& Nbsp; Помощ за интерактивна:
& Nbsp;
& Nbsp; Включете интерактивен режим на монитора
& Nbsp;
& Nbsp; Обикновено монитора освобождава връзката след една единствена команда.
& Nbsp; С участието си в интерактивен режим, на екрана няма да сложи край на връзката
& Nbsp; докато не влезе в "откажат" команда.
& Nbsp;
& Nbsp; В интерактивен режим, празен ред повтаря последната команда.
& Nbsp;
& Nbsp; >>> connection.test_input ("помогне откажат Н")
& Nbsp; Помощ за невинен
& Nbsp;
& Nbsp; Quit монитора
& Nbsp;
& Nbsp; Това е само наистина полезно в интерактивен режим (вижте "Интерактивно"
& Nbsp; команда).
& Nbsp;
Забележете, че в резултат на командите не завършва с "-> CLOSE", която щеше да посочи затворена връзка.
Също така забележете, че интерактивен режим ви позволява да повторите команди.
& Nbsp; >>> connection.test_input ("здравей Н")
& Nbsp; Hi свят, е хубаво да се запознаем!
& Nbsp; >>> connection.test_input (' Н ")
& Nbsp; Hi свят, е хубаво да се запознаем!
& Nbsp; >>> connection.test_input ("здравей Джим Н")
& Nbsp; Hi Джим, приятно да се запознаем!
& Nbsp; >>> connection.test_input (' Н ")
& Nbsp; Hi Джим, приятно да се запознаем!
Сега ние ще използваме откажат да прекъснете връзката.
& Nbsp; >>> connection.test_input ("напусна Н")
& Nbsp; Goodbye.
& Nbsp; -> CLOSE
И накрая, това е да се отбележи, че изключения ще генерират traceback на връзката.
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
& Nbsp; >>> connection.test_input ("здравей Джим 42 Н") # doctest: + елипса
& Nbsp; Traceback (последното повикване последната):
& Nbsp; ...
& Nbsp; Тип грешка: Здравейте () отнема най-много 2 аргументи (3 дадени)
& Nbsp;
& Nbsp; -> CLOSE
Командване примки
Използване на режим "MORE", команди могат да сигнализират, че те искат да претендира цялото бъдещо въвеждане от потребителя. Ние ще изпълни едно глупаво например да се демонстрира как работи.
Ето една команда, която се изпълнява на калкулатор.
& Nbsp; "." >>> НЕЗАБАВНА =
& Nbsp; >>> Def Calc (включване, * аргументи):
& Nbsp; ... ако аргументи и аргументи [0] == "откажат":
& Nbsp; ... върне zc.monitor.QUIT_MARKER
& Nbsp; ...
& Nbsp; ... ако аргументи:
& Nbsp; ... connection.write (ул. (Оценка ('' се присъедини (аргументи))))
& Nbsp; ... connection.write (' Н ")
& Nbsp; ...
& Nbsp; ... connection.write (НЕЗАБАВНА)
& Nbsp; ... върне zc.monitor.MORE_MARKER
Ако се регистрирате тази команда ...
& Nbsp; >>> zc.monitor.register (изчислено)
... Ние можем да му се позовават и ние получите бърз.
& Nbsp; >>> връзка = zc.ngi.testing.TextConnection ()
& Nbsp; >>> сървър = zc.monitor.Server (връзка)
& Nbsp; >>> connection.test_input ("изчислено Н")
& Nbsp ;.
Ако след това го даде повече данни получаваме резултата, плюс още един ред.
& Nbsp; >>> connection.test_input ("2 + 2 Н")
& Nbsp; 4
& Nbsp ;.
& Nbsp; >>> connection.test_input ("4 * 2 Н")
& Nbsp; 8
& Nbsp ;.
След като свършим ние можем да кажем калкулатора да ни пусне.
& Nbsp; >>> connection.test_input ("напусна Н")
& Nbsp; -> CLOSE
Започнете сървъра
& Nbsp; >>> време внос
& Nbsp; >>> внос zope.testing.loggingsupport, сеч
& Nbsp; >>> loghandler = zope.testing.loggingsupport.InstalledHandler (
& Nbsp; ... Никой, ниво = logging.INFO)
& Nbsp; >>> zc.monitor.start (9644)
& Nbsp; ('', 9644)
& Nbsp; >>> печат loghandler
& Nbsp; zc.ngi.async.server INFO
& Nbsp; слушане на ('', 9644)
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = None
& Nbsp; >>> time.sleep (0.1)
& Nbsp; >>> loghandler.clear ()
& Nbsp; >>> zc.monitor.start (("127.0.0.1", 9644))
& Nbsp; ("127.0.0.1", 9644)
& Nbsp; >>> печат loghandler
& Nbsp; zc.ngi.async.server INFO
& Nbsp; слушане на ("127.0.0.1", 9644)
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = None
& Nbsp; >>> time.sleep (0.1)
Свързват с порт 0:
& Nbsp; >>> адр = zc.monitor.start (0)
& Nbsp; >>> адр == zc.monitor.last_listener.address
& Nbsp; True
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = None
& Nbsp; >>> time.sleep (0.1)
Опитвайки се да се свържете повторно до пристанище в употреба:
& 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; False
& Nbsp; >>> печат loghandler
& Nbsp; zc.ngi.async.server INFO
& Nbsp; слушане на ("127.0.0.1", 9644)
& Nbsp; zc.ngi.async.server ПРЕДУПРЕЖДЕНИЕ
& Nbsp; състояние да слушате на ("127.0.0.1", 9644)
& Nbsp; корен ПРЕДУПРЕЖДЕНИЕ
& Nbsp; не можете да стартирате zc.monitor сървър, защото на адреса ("127.0.0.1", 9644) е в употреба.
& Nbsp; >>> zc.monitor.last_listener.close ()
& Nbsp; >>> zc.monitor.last_listener = None
& Nbsp; >>> time.sleep (0.1)
& Nbsp; >>> loghandler.uninstall ()
Какво ново в тази версия:
- Когато свързване на монитора към гнездо Unix-домейн, премахнете съществуващ контакт при същия път, така обвързването е успешна. Това може да повлияе на досегашната употреба по отношение на zopectl дебъгване поведение, но ще бъде по-предвидима.
Какво ново във версия 0.3.0:
- Добавена опростен интерфейс регистрация .
<силни> Изисквания :
- Python
Коментари не е намерена