üzerinde Twisted kapatma işlemini engeller. CherryPy web sunucusu da dahil olmak üzere başka bir iş parçacığı başlattıktan sonra ana iş parçamda reaktöre reactor.run()
ile başlatarak Twisted çalıştıran bir uygulama var.CherryPy, Windows
from threading import Thread
from signal import signal, SIGINT
import cherrypy
from twisted.internet import reactor
from twisted.web.client import getPage
def stop(signum, frame):
cherrypy.engine.exit()
reactor.callFromThread(reactor.stop)
signal(SIGINT, stop)
class Root:
@cherrypy.expose
def index(self):
reactor.callFromThread(kickoff)
return "Hello World!"
cherrypy.server.socket_host = "0.0.0.0"
Thread(target=cherrypy.quickstart, args=[Root()]).start()
def print_page(html):
print(html)
def kickoff():
getPage("http://acpstats/account/login").addCallback(print_page)
reactor.run()
Burada kapatma temiz bir şekilde yapar ben CherryPy'ın olmadan yazdım farklı bir program olduğu için CherryPy suçlu, burada olduğuna inanıyoruz: İşte Ctrl + C Windows üzerinde Linux üzerinde değil basıldığında düzgün kapanınca bir program Linux hem de Windows üzerinde Ctrl + C basıldığında:
from time import sleep
from threading import Thread
from signal import signal, SIGINT
from twisted.internet import reactor
from twisted.web.client import getPage
keep_going = True
def stop(signum, frame):
global keep_going
keep_going = False
reactor.callFromThread(reactor.stop)
signal(SIGINT, stop)
def print_page(html):
print(html)
def kickoff():
getPage("http://acpstats/account/login").addCallback(print_page)
def periodic_downloader():
while keep_going:
reactor.callFromThread(kickoff)
sleep(5)
Thread(target=periodic_downloader).start()
reactor.run()
kimse sorunun ne olduğunu bir fikri var mı? CherryPy i? reactor.callFromThread
kullanarak arama hiçbir işlevi çalışırken CherryPy
reactor.callFromThread
kullanarak sinyal eylemcilerden işlevleri çağırabilir, Linux olduğum herşeyi
- Windows'ta
- çalışır: İşte benim bilmece Bir sinyal işleyici, hiç çalışacaktır (sinyal işleyicisinin kendisini çağırdığını doğruladım)
Bu konuda ne yapabilirim? CherryPy'i çalıştırırken bir sinyal işleyicisinden Windows'ta Twisted'i nasıl kapatabilirim? Bu bir hata mı, yoksa bu iki projenin bir kısmının belgelerinin önemli bir kısmını kaçırdım mı? Hızlı başlatmayı çağırdığınızda CherryPy varsayılan olarak sinyalleri işliyor.
teşekkürler çok! Cevabınız o kadar iyi yazılmış ve yardımcı olmuştu ki, size sadece 50 itibarı vermek için bir ödül verdim. –