Twistedからtwistd
スクリプトをモジュールとしてインポートして呼び出す必要があります。既存のコマンドラインを使用してこれを解決する最も簡単な方法は、sys
モジュールをインポートして、argv
コマンドラインを置き換えて、twistd
の実行方法のように見せてから実行することです。
ここでは、既存のコマンドラインを取り、代わりにシェルスクリプトのPythonスクリプトでそれを実行する簡単なスクリプトの例です:あなたがパッケージにうまくこれをバンドルしたい場合
#!/usr/bin/python
from twisted.scripts.twistd import run
from sys import argv
argv[1:] = [
'-y', 'myapp.py',
'--pidfile', '/var/run/myapp.pid',
'--logfile', '/var/run/myapp.log'
]
run()
ではなく、ハードコーディングパスでは、myapp.py
へのパスを決定するには、各モジュールでPythonによって設定された特別な__file__
変数を調べます。
#!/usr/bin/python
from twisted.scripts.twistd import run
from my.application import some_module
from os.path import join, dirname
from sys import argv
argv[1:] = [
'-y', join(dirname(some_module.__file__), "myapp.py"),
'--pidfile', '/var/run/myapp.pid',
'--logfile', '/var/run/myapp.log'
]
run()
、あなたは明らかに適切なpidファイルやログファイルのパスを計算するために同様のことを行うことができます:例にこれを追加すると、そのように見えます。
より包括的な解決策は、twistd
の場合はa pluginと書いてください。 axiomatic Axiomオブジェクトデータベースプロジェクトのコマンドラインプログラムは、上記の説明と同様のコマンドライン操作をtwistd
とどのように行うのかをテストした実績のある例として機能しますが、コマンドラインオプションをより包括的に処理し、異なる非ねじれランニングユーティリティ機能などが含まれる。
こんにちは、ありがとうございました。私は既にプラグインとしてアプリケーションを作成しています(今はログファイルやpidfileのようなコードオプションを設定する方法を知っています)。ライブラリがまさに私が欲しいものであるようにtwistedをまとめてください:)あなたの例は少し複雑ですが、私は試しています! – unpythonicguy
まあ、私は試しましたが、実際にあなたの例を理解していません:( – unpythonicguy
'from twisted.scripts.twistd import; from sys import argv; argv [1:] = ['-y'、 'myapp。 '' -pidfile =/var/run/myapp.pid '、' --logfile =/var/run/myapp.log ']; run() ' –