मेरे पास अपाचे HTTPD के पीछे एक फ्लास्क ऐप चल रहा है। अपाचे को कई बाल प्रक्रियाओं के लिए कॉन्फ़िगर किया गया है।अपाचे फ़्लास्क प्रक्रिया को समाप्त करते समय फ़ंक्शन को कैसे कॉल करें?
फ्लास्क ऐप सर्वर पर फ़ाइल को फ़ाइल की नाम के साथ अपनी प्रक्रिया आईडी के बराबर फ़ाइल बनाता है। कोड इस तरह दिखता है:
import os
@app.before_first_request
def before_first_request():
filename = os.getpid()
with open(filename, 'w') as file:
file.write('Hello')
जब बच्चा प्रक्रिया मार दिया जाता है/समाप्त हो गया/समाप्त मैं इस फ़ाइल को हटाने के लिए बोतल एप्लिकेशन चाहते हैं।
यह बहुत महत्वपूर्ण नहीं है कि फ़ाइल को हटाने का कारण होता है, क्योंकि इन फ़ाइलों में अधिक जगह नहीं लगेगी, इसलिए अगर विचित्र त्रुटियां होती हैं तो मुझे उन्हें संभालने की आवश्यकता नहीं होती है। लेकिन सामान्य वर्कफ़्लो के लिए, जब आप अपाचे फ्लास्क प्रक्रिया को बंद कर देते हैं तो मैं कुछ सफाई करना चाहता हूं।
ऐसा करने का सबसे अच्छा तरीका कोई विचार?
अपाचे/mod_wsgi निश्चित रूप से हमेशा यह सुनिश्चित करें कि atexit कॉलबैक लागू कर रहे हैं की कोशिश करता है यहां तक कि ऐसे मामलों में जहां प्रक्रिया अनुरोध टाइमआउट इत्यादि जैसी स्थितियों के कारण बंद होना पड़ रहा है। बंदूकधारी में गारंटी की गारंटी नहीं है और आपको बंदूक के तहत अटेक्सिट का उपयोग करने के बारे में और अधिक सावधान रहना होगा क्योंकि इसे विभिन्न मामलों में नहीं कहा जाएगा। किसी भी मामले में आपको उस पर भरोसा नहीं करना चाहिए और यदि आवेदन मौजूद नहीं होना चाहिए तो किसी भी आवेदन को बाद में चलाने वाली फ़ाइल के लिए लचीला होना चाहिए। इसे हटाने के लिए एक अलग कार्य अन्य उत्तर वर्णन के रूप में आवश्यक हो सकता है। –
कुछ अन्य डब्लूएसजीआई सर्वरों के लिए कॉलबैक पर भी कॉल नहीं किया जा सकता है। मेरा मानना है कि यह अभी भी यूडब्ल्यूएसजीआई के मामले में है जब तक कि आप इसे एक दुभाषिया का उपयोग करने के लिए मजबूर नहीं करते हैं, क्योंकि यह सुनिश्चित करने के लिए कदम नहीं उठाता है कि उप-दुभाषियों में अयोग्य कॉलबैक को बुलाया जाता है। इसे विशेष कदम उठाने होंगे क्योंकि पाइथन उप दुभाषियों में अनावश्यक कॉलबैक नहीं कहता है और अपाचे/mod_wsgi यह सुनिश्चित करने के लिए विशेष चाल का उपयोग कर रहा है। –
महान जानकारी @GrahamDumpleton! इसके लिए धन्यवाद, और 'os.remove'' कॉल के आस-पास अपवाद गार्ड। –