Twistedでネットワークアプリケーションを開発しています。その一部はDjangoで書かれたWebインターフェイスで構成されています。Twisted:ThreadPoolを作成してデーモン化すると情報がないハングにつながる
TwistedのWSGIサーバーを使用してWebインターフェイスをホストしたいと思っています。twistd
を使用できるようにするために、「タップ」プラグインを作成しました。
-n
フラグ(デーモン化しないでください)でサーバを実行すると、すべて正常に動作しますが、このフラグが削除されると、サーバは要求に全く応答せず、メッセージも記録されませんまだ実行されています)。
bug on Twisted's Tracが問題を正確に記述しているようですが、私のプラグインはcode referenced in the ticketに基づいています。
残念ながら、この問題は修正されておらず、ほぼ1年前に発生しました。
私はService
を拡張し、
startService
が呼ばれる特定の
ThreadPool
を開始
ThreadPoolService
クラス、作成しようとしました
:
class ThreadPoolService(service.Service):
def __init__(self, pool):
self.pool = pool
def startService(self):
super(ThreadPoolService, self).startService()
self.pool.start()
def stopService(self):
super(ThreadPoolService, self).stopService()
self.pool.stop()
をしかし、ツイストは全くstartService
メソッドを呼び出していないようです。問題は、「タップ」プラグインでは、ServiceMaker
はのサービスを1つだけ返すことができると考えています。サービスが開始されていて、同じアプリケーションに属する他のサービスは起動していません。明らかに、私はWSGIルートを含むTCPServer
サービスを返送しています。
この時点で、私は幾分かのレンガの壁を少し打った。どのように私はこの問題を回避することができるように誰もがアイデアを持っていますか?
これは完璧です。私はなぜドキュメンテーションでそれを見ていないのかわかりませんが、それは魅力のように機能します。ありがとうございました! –