मुझे यह docs में नहीं मिला, लेकिन सिग्नल का उपयोग किये बिना asyncore.loop()
से बाहर निकलने का मेरा मतलब कैसा रहा?एक हैंडलर से एसिंककोर प्रेषक को कैसे छोड़ें?
उत्तर
वह स्रोत कोड देखने के बाद बाहर काम करने के लिए जल्दी था। सीधे स्रोत से जोड़ने के लिए दस्तावेज़ों के लिए धन्यवाद!
एक ExitNow अपवाद है जिसे आप आसानी से ऐप से उठा सकते हैं, जो लूप से बाहर निकलता है।
दस्तावेज़ों से EchoHandler
उदाहरण का उपयोग करके, मैंने डेटा प्राप्त करते समय इसे तुरंत छोड़ने के लिए संशोधित किया है।
class EchoHandler(asyncore.dispatcher_with_send):
def handle_read(self):
data = self.recv(8192)
if data:
raise asyncore.ExitNow('Server is quitting!')
इसके अलावा, ध्यान रखें कि आप पकड़ कर सकते हैं ExitNow
इसलिए यदि आपका एप्लिकेशन उठाना नहीं है कि आप वह आंतरिक रूप से उपयोग कर रहे हैं में रहते हैं। यह मेरा कुछ स्रोत है:
def run(config):
instance = LockServer(config)
try:
asyncore.loop()
except asyncore.ExitNow, e:
print e
एसिंककोर पाश भी छोड़ता है जब कोई कनेक्शन नहीं छोड़ा जाता है, तो आप कनेक्शन को बंद कर सकते हैं। यदि आपके पास एकाधिक कनेक्शन चल रहे हैं तो आप asyncore.close_all() का उपयोग कर सकते हैं।
एक और तरीका asyncore.loop कॉल के गिनती पैरामीटर का उपयोग करना है। इसके बाद आप अन्य तर्क में asyncore.loop लपेट कर सकते हैं:
while(i_should_continue()):
asyncore.loop(count=1)
यह तुरंत एक खुले कनेक्शन, या समय से पहले का समय समाप्त नहीं रुकेगा। लेकिन यह शायद एक अच्छी बात है? जब मैं एक सुनवाई सर्वर शुरू करता हूं तो मैं इसका उपयोग कर रहा हूं।
इस प्रयास करें:
सर्वर के लिएएक वर्ग (asyncore.dispatcher फैली):
class Server(asyncore.dispatcher):
def __init__(self, port):
asyncore.dispatcher.__init__(self)
self.host = socket.gethostname()
self.port = port
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind((self.host, self.port))
self.listen(5)
print "[Server] Listening on {h}:{p}".format(h=self.host, p=self.port)
def handle_accept(self):
pair = self.accept()
if pair is not None:
sock, addr = pair
print "[ServerSocket] We got a connection from {a}".format(a=addr)
SocketHandler(sock)
धागा जो सर्वर का प्रबंधन करने के लिए जा रहा है के लिए एक और वर्ग (फैली धागा) ... की जांच रन() विधि, वहाँ है जहाँ हम फोन asyncore.loop():
:class ServerThread(threading.Thread):
def __init__(self, port):
threading.Thread.__init__(self)
self.server = Server(port)
def run(self):
asyncore.loop()
def stop(self):
self.server.close()
self.join()
अब सर्वर शुरू करने के लिए 0
# This is the communication server, it is going to listen for incoming connections, it has its own thread:
s = ServerThread(PORT)
s.start() # Here we start the thread for the server
print "Server is ready..."
print "Is ServerThread alive? {t}".format(t=str(s.is_alive()))
raw_input("Press any key to stop de server now...")
print "Trying to stop ServerThread..."
s.stop()
print "The server will die in 30 seconds..."
आप देखेंगे कि सर्वर तुरंत मरता नहीं है ... लेकिन यह शान से
- 1. एसिंककोर
- 2. एक फ़ाइल को छोटा करने से छोड़ें?
- 3. एक्शनफ़िल्टर से एक्शन निष्पादन को कैसे छोड़ें?
- 4. ट्विटर बूटस्ट्रैप - एक रेखा को कैसे छोड़ें?
- 5. एक संदेश भेजने के लिए एक प्रेषक (रिटर्न-पथ, प्रेषक या प्रेषक) प्राप्त करना जारी रखें
- 6. ईमेल टेक्स्ट से "प्रेषक" पते को पार्सिंग
- 7. कैसे शान से एक WebAPI संदेश हैंडलर
- 8. कैसे सही ढंग से एक ईवेंट हैंडलर
- 9. has_secure_password मान्यताओं को कैसे छोड़ें
- 10. एचजी विलय को कैसे छोड़ें?
- 11. TDbGrid.OnColumn में माउस को कैसे छोड़ें
- 12. पहले बच्चे को कैसे छोड़ें?
- 13. एक ईमेल प्रेषक सेवा बिल्डिंग
- 14. हैंडलर को कैसे रोकें?
- 15. कस्टम घटनाएं बनाना - ऑब्जेक्ट प्रेषक या टाइप किए गए प्रेषक?
- 16. टैब नेविगेशन से एक फॉर्म तत्व कैसे छोड़ें?
- 17. प्रेषक कैसे काम करता है?
- 18. एसक्यूएल सर्वर कॉलम से पहचान कैसे छोड़ें
- 19. नाक: डिफ़ॉल्ट रूप से परीक्षण कैसे छोड़ें?
- 20. MSAccess से MSAccess खोलते समय ऑटोएक्सैक मैक्रो को कैसे छोड़ें?
- 21. सॉकेट से जुड़े सभी कमरों को कैसे छोड़ें, Node.js
- 22. प्रेषक शीर्षलेख
- 23. Google मानचित्र पर मार्कर को फिर से कैसे छोड़ें?
- 24. एक .txt फ़ाइल fscanning जब पहली पंक्ति को कैसे छोड़ें?
- 25. GoogleTest: परीक्षण कैसे छोड़ें?
- 26. प्रोग्राम के भीतर से जावा ऐप को कैसे छोड़ें
- 27. किसी प्रक्रिया से जुड़े होने पर स्ट्रेस को कैसे छोड़ें?
- 28. प्रेषक नाम
- 29. विम quickfix कैसे छोड़ें?
- 30. रेल में आरएसपीसी: पहले_फिल्टर को कैसे छोड़ें?
मर जाता है यह शायद उचित समाधान है यदि आप "लूप के बाहर" से पाश बंद करना चाहते हैं। उपरोक्त अन्य समाधान लूप के भीतर लूप को रोकने के लिए हैं। –