1

私はねじれたpythonプログラムをそのように呼んでいます:

twistd -l twisted.log -y controller.py

私が読んだすべてのドキュメントに基づいて:

  • 出力を STDERR からログファイルに送信する必要があります
  • これをデーモン化し、シェルプロンプトを表示する必要があります

代わりは:

  • ログファイルはそのままです
  • すべてのデバッグは stderr に送られます (「インポート ロギング」から)
  • アプリはデーモン化しません(ログインしたままにしておく必要があります)

誰かが私を正しい方向に向けることができますか? ありがとう。


編集:

tac には次の内容が含まれます。

from twisted.internet import protocol, reactor  
from twisted.application import service  

application = service.Application('myapp daemon')  

dbUpdateService= DbUpdater_UpdateService()  
dbUpdateService.setServiceParent(application)  
dbUpdateService.startService()  

# repeat with 3x services  

reactor.run()
4

2 に答える 2

1

これはおそらくデーモン化の問題を解決しませんが、ログファイルに関してtwisted.python.logを使用していますか?ログ関連の出力にはlog.msgとlog.errを使用します。http://twistedmatrix.com/documents/current/core/howto/logging.htmlをチェックしてください

また、twistedを使用している場合は、log.startLoggingを呼び出す必要はありません。

于 2012-08-13T20:48:15.343 に答える
1

あなたがtwistd正しく使っているようには見えません。

  1. このオプションは、ファイルではなくファイルを-y読み取ります。技術的には aも Python ソース コードですが、いくつかの追加ルールがあり、モジュールである必要はありません。ここにいくつかの説明があります。.tac.py.tac
  2. この-lオプションはtwisted.python.log、 ではなくから出力を送信しますlogging
  3. 想定されていないランダムなクラッドをcontroller.py実行しているため(そのファイルはデーモン化の前に実行されます)、アプリはおそらくデーモン化していませんが、アタッチしていないcontroller.pyので、本当にわかりません。

今後実際に行っていることについて、より詳しく質問してください。アプリケーションへのコードがない場合、上記はほとんど推測です。

于 2012-08-07T18:04:41.167 に答える