APIがthreading.Threadを使用しているサービスを使用していて、内部にDeferredsを使用したいと思います。デーモンツイストでスレッドを使用したAPIを正しく使用する
標準のPythonモジュールのように実行すると問題はありません。ような何か:
from twisted.internet import reactor
from outside import ServiceUsingThreadingAndDeferred
service = ServiceUsingThreadingAndDeferred()
reactor.listenTCP(port, protocol_factory)
service.start()
reactor.run()
私は -y twistdと、次の.tacを実行する場合、サービスが単純に動作していないものの:
from twisted.application import internet, service
from outside import ServiceUsingThreadingAndDeferred
service = ServiceUsingThreadingAndDeferred()
# Application set-up
application = service.Application("appName")
my_server = internet.TCPServer(port, protocol_factory)
my_server.setServiceParent(application)
service.start()
私は後者の場合に問題がメインということだと思いますリアクタースレッドはサービススレッド自体を生成していませんが、なぜそれが最初のケースで起こるのかわかりません...私は回避策としてcallLaterを使用しました:
from twisted.application import internet, service
from outside import ServiceUsingThreadingAndDeferred
from twisted.internet import reactor
service = ServiceUsingThreadingAndDeferred()
# Application set-up
application = service.Application("appName")
my_server = internet.TCPServer(port, protocol_factory)
my_server.setServiceParent(application)
reactor.callLater(1, service.start)
しかし、これに取り組むのが正しい方法かどうかはわかりません。アドバイスはありますか?
自己完結型の、最小限の例ください:http://sscce.org/ –
こんにちは、 ここから例のクローンを作成してください:https://github.com/eigen-value/twisted_and_threading – EigenValue