पर ट्विस्टेड शट डाउन के साथ हस्तक्षेप करता है मेरे पास एक ऐसा एप्लिकेशन है जो चेरीपी वेब सर्वर समेत कुछ अन्य धागे शुरू करने के बाद मेरे मुख्य थ्रेड में reactor.run()
के साथ रिएक्टर शुरू करके ट्विस्ट चलाता है।चेरीपी विंडोज
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()
मुझे विश्वास है कि CherryPy अपराधी यहाँ है, क्योंकि यहां एक अलग कार्यक्रम है कि मैं CherryPy बिना लिखा है कि बंद सफाई से करता है: यहाँ एक प्रोग्राम है जो बंद हो जाता है सफाई से जब Ctrl + C लिनक्स पर नहीं बल्कि दबाया जाता है विंडोज पर है लिनक्स और सी दोनों पर जब Ctrl + C दबाया जाता है:
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()
क्या किसी को पता है कि समस्या क्या है? यहाँ मेरी पहेली है:
- लिनक्स सब कुछ पर काम करता है
- Windows पर, मैं
reactor.callFromThread
का उपयोग कर संकेत संचालकों से कार्यों कॉल कर सकते हैं जब CherryPy - जब CherryPy चल रहा है, कोई समारोह है कि मैं से
reactor.callFromThread
का उपयोग कर कॉल नहीं चल रहा है एक सिग्नल हैंडलर कभी निष्पादित करेगा (मैंने सत्यापित किया है कि सिग्नल हैंडलर स्वयं को कॉल किया जाता है)
मैं इसके बारे में क्या कर सकता हूं? चेरीपी चलाने के दौरान मैं सिग्नल हैंडलर से विंडोज़ पर ट्विस्ट कैसे बंद कर सकता हूं? क्या यह एक बग है, या क्या मैंने इन दो परियोजनाओं में से किसी एक के लिए दस्तावेज़ीकरण के कुछ महत्वपूर्ण हिस्से को याद किया है?
धन्यवाद इतना: तो, अपनी लाइन बदल देते हैं:
के साथ! आपका जवाब इतना अच्छी तरह से लिखित और सहायक था कि मैंने आपको 50 प्रतिष्ठा देने के लिए एक उपहार दिया। –