zc.monitorは、各種の情報ビットを要求するコマンドライン·インタフェースを提供するサーバである サーバがzc.ngiベースですので、我々はそれを証明するためにzc.ngiテストインフラストラクチャを使用することができます。
  >>>輸入zc.ngi.testing
  >>>輸入zc.monitor
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
サーバーは、コマンドの拡張可能なセットをサポートしています。 zope.componentパッケージで定義されたそれは、名前のzc.monitor.interfaces.IMonitorPlugin「ユーティリティ」などのコマンドを検索します。
これを理解するために、我々はハロープラグインを作成します:
  >>>デフこんにちは(接続、名前= '世界'):
  ... "" "よろしく
  ...
  ...あなたは世界ではないなら名前を入力します。
  ... "" "
  ... connection.write( "こんにちは%sの、YAはじめまして N!"%名)
そしてそれを登録します。
  >>> zc.monitor.register(こんにちは)
我々はコマンドを登録すると、私たちは名前を提供することができます。これを理解するために、我々は再びこんにちは登録します:
  >>> zc.monitor.register(こんにちは、「こんにちは」)
今、私たちは、サーバーにハローコマンドを与えることができます。
  >>> connection.test_input( 'こんにちはN')
 こんにちは世界、YAはじめまして!
  - > CLOSE
私たちは名前を渡すことができます。
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
  >>> connection.test_input( 'ハロージム N')
 こんにちはジム、YAはじめまして!
  - > CLOSE
サーバーは、いくつかの基本的なコマンドが付属しています。我々は、彼らが何をすべきか見ることができるようにのは、それらを登録しましょう。私たちは、simplfied登録インタフェースを使用します:
  >>> zc.monitor.register_basics()
第一は、helpコマンドである。入力せずにヘルプを与えて、使用可能なコマンドのリストを与える:
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
  >>> connection.test_input( 'ヘルプの N')
 サポートされるコマンド:
 ハロー - 挨拶
  HELP - サーバーコマンドについてのヘルプを表示
挨拶 - ハイテク;&NBSP
 インタラクティブ - モニターの対話モードをオンにする
 終了 - モニターを終了します
  - > CLOSE
私たちは、コマンド名を指定することで詳細なヘルプを取得することができます:
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
  >>> connection.test_input( 'ヘルプヘルプの N')
  HELPのヘルプ:
 
 サーバーコマンドについてのヘルプを表示
 
 デフォルトでは、コマンドと要約の一覧が印刷されます。提供する
 コマンド名、コマンドの詳細なドキュメントを取得する。
 
  - > CLOSE
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
  >>> connection.test_input( 'ヘルプハローの N')
 ハローのヘルプ:
 
 よろしく
 
 あなたは世界ではないなら名前を入力します。
 
  - > CLOSE
インタラクティブなコマンドは対話モードにモニターを切り替えます。上記から分かるように、モニターは通常、単一のコマンドに応答して、接続を閉じます。 quitコマンドを使用するまで、「対話モード」では、接続がクローズされません。診断のためにtelnetを介してモニタにアクセスするときに便利です。
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
  >>> connection.test_input( 'インタラクティブの N')
 対話モードに。終了するには「終了」を使用します。
  >>> connection.test_input( 'インタラクティブ nを助ける')
 インタラクティブのヘルプ:
 
 モニターの対話モードをオンにする
 
&NBSPは、通常、モニタは単一のコマンド後に接続を解除する。
 対話モードを入力することで、モニターは接続を終了しません
 あなたは "QUIT"コマンドを入力するまで。
 
&NBSPは、対話モードでは、空の行が最後のコマンドを繰り返します。
 
  >>> connection.test_input( ' nを終了助ける')
 終了のヘルプ:
 
 モニターを終了します
 
 これは対話モードでのみ便利です(「インタラクティブ」を参照してください。
 コマンド)。
 
" - > CLOSE"閉じられた接続を示したであろう、コマンドの結果がで終わっていなかったことに注意してください。
また、対話モードでは、コマンドを繰り返すことができていることに気づく。
  >>> connection.test_input( 'ハローの N')
 こんにちは世界、YAはじめまして!
  >>> connection.test_input( ' nの')
 こんにちは世界、YAはじめまして!
  >>> connection.test_input( 'ハロージム N')
 こんにちはジム、YAはじめまして!
  >>> connection.test_input( ' nの')
 こんにちはジム、YAはじめまして!
今、私たちは、接続を閉じます終了が使用されます。
  >>> connection.test_input( ' n個を終了')
 さようなら。
  - > CLOSE
最後に、例外は、接続上のトレースバックを生成することは注目に値します。
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
  >>> connection.test_input( 'ハロージム42 N')#のdoctestの:+ ELLIPSIS
 トレースバック(最新の呼び出し最後):
  ...
&NBSPに、例外TypeErrorは:こんにちは()(与えられた3)最大2引数を取ります
 
  - > CLOSE
コマンドループ
「MORE」モードを使用して、コマンドは、それらが将来のすべてのユーザ入力を要求することを知らせることができる。我々は、それがどのように動作するかを示すために愚かな例を実装します。
ここでは電卓を実装コマンドです。
  '。」>>> PROMPT =
  >>> defのCALC(接続、*引数):
  ...引数とargs [0] == '終了する」とします。
  ... zc.monitor.QUIT_MARKERを返す
  ...
  ... argsの場合:
  ... connection.write(STR(evalの( ''))(引数)に参加。)
  ... connection.write( ' nの')
  ...
  ... connection.write(PROMPT)
  ... zc.monitor.MORE_MARKERを返す
私たちは、このコマンドを登録した場合...
  >>> zc.monitor.register(CALC)
...我々はそれを呼び出すことができ、我々はプロンプトを取得。
  >>>接続= zc.ngi.testing.TextConnection()
  >>>サーバー= zc.monitor.Server(接続)
  >>> connection.test_input( 'CALCます n')
&NBSP ;.
私たちは、それより多くの入力を与えると、我々は結果を加えた別のプロンプトが表示されます。
  >>> connection.test_input( '2 + 2のn ')
  4
&NBSP ;.
  >>> connection.test_input( '4 * 2 N')
  8
&NBSP ;.
我々が終わったら、私たちは私たちが行くように電卓を伝えることができます。
  >>> connection.test_input( ' n個を終了')
  - > CLOSE
サーバーを起動します
  >>>インポート時
  >>>輸入zope.testing.loggingsupport、ロギング
  >>> loghandler = zope.testing.loggingsupport.InstalledHandler(
  ...なし、レベル= logging.INFO)
  >>> zc.monitor.start(9644)
 ( ''、9644)
  >>>印刷loghandler
  INFO zc.ngi.async.server
 リッスン( ''、9644)
  >>> zc.monitor.last_listener.close()
  >>> zc.monitor.last_listener =なし
  >>> time.sleep(0.1)
  >>> loghandler.clear()
  >>> zc.monitor.start(( '127.0.0.1'、9644))
 ( '127.0.0.1'、9644)
  >>>印刷loghandler
  INFO zc.ngi.async.server
 ( '127.0.0.1'、9644)でリスニング
  >>> zc.monitor.last_listener.close()
  >>> zc.monitor.last_listener =なし
  >>> time.sleep(0.1)
ポート0にバインドします。
  >>> ADDR = zc.monitor.start(0)
  >>> ADDR == zc.monitor.last_listener.address
 真
  >>> zc.monitor.last_listener.close()
  >>> zc.monitor.last_listener =なし
  >>> time.sleep(0.1)
使用中のポートに再バインドしようとしています:
  >>> loghandler.clear()
  >>> zc.monitor.start(( '127.0.0.1'、9644))
 ( '127.0.0.1'、9644)
  >>> zc.monitor.start(( '127.0.0.1'、9644))
&NBSPはFalse
  >>>印刷loghandler
  INFO zc.ngi.async.server
 ( '127.0.0.1'、9644)でリスニング
  zc.ngi.async.server警告
 ( '127.0.0.1'、9644)でリッスンすることができません
 ルート警告
&NBSPを、アドレス( '127.0.0.1'、9644)が使用中であるためzc.monitorサーバを起動することができません。
  >>> zc.monitor.last_listener.close()
  >>> zc.monitor.last_listener =なし
  >>> time.sleep(0.1)
  >>> loghandler.uninstall()
のこのリリースで新しいのは何ですか。
- にモニターをバインドする場合Unixドメインソケットのバインドが成功したので、同じパスで既存のソケットを削除します。これは、デバッグの動作を以下のように実行することに関して、既存の使用に影響を与える可能性が、より予測可能になります。
の何がバージョン0.3.0のの新しいです。
- 単純化された登録インターフェースが追加されました。 。
の要件の
- のPythonます。
コメントが見つかりません