पर कोड निष्पादित करें मैं Django 1.9.3 का उपयोग कर रहा हूं। मेरे पास कई ऐप्स के साथ एक प्रोजेक्ट है। मैं प्रोजेक्ट के स्टार्टअप पर ऐप में से किसी एक की टेबल अपडेट करना चाहता हूं।Django - स्टार्ट-अप
उपयोग-केस:
उदाहरण के लिए, मान लीजिए कि मैं अपनी वेबसाइट पर आइटम बेचने के लिए चाहते हैं। मेरे पास एक ऐप है जिसमें मॉडल आइटम है। मेरे पास Django के बाहर एक वेब-सेवा है जो "give_all_items_available()" सेवा प्रदान करती है। मैं अपने उपयोगकर्ता को वेब साइट का उपयोग कर वस्तुओं की सूची प्रदान करना चाहता हूं। इसलिए मुझे लगता है कि मुझे उस वेब-सेवा इनपुट के साथ नियमित रूप से अपना डेटाबेस अपडेट करना होगा (स्टार्ट-अप और प्रत्येक बार एक बार)।
मैं सभी कोड लिखा है, ऐसा लगता है निम्नलिखित लग रहा है (यह एक उदाहरण है):
from my_app.models import My_table
def on_startup():
my_thread = Thread(execute = populate_tables, loopmode = True, background = True) # thread running in loopmode in background
my_thread.start() # starts the thread and returns
def populate_tables()
response = call_webservice() # let's imagine this method returns data for creating a new model instance
My_table(response).save() # this save() isn't threadsafe in this example, but that's not my point ;-)
मेरे समस्या मैं कहाँ इस कोड को लिखने के लिए
प्रयास नहीं जानता है:
अब तक, Django 1.6.5 के साथ, मैं init से कुछ कोड के साथ आया था। मेरे ऐप की फ़ाइल। यह काम कर रहा था, लेकिन मैंने सोचा कि यह काफी बदसूरत था (एक "आयात" के साथ धागा शुरू करना वास्तव में छुपा कोड जैसा दिखता है)।
मैंने Django 1.9 "तैयार()" विधि में देखा। लेकिन यह इस विधि में मॉडल से निपटने के लिए प्रलेखन में लिखा गया है, इसलिए मैं उलझन में हूं।
मैं अपने सर्वर से शुरू होने वाले कमांड में स्टार्टअप कोड जोड़ सकता हूं लेकिन यह स्टार्टअप कोड ऐप उन्मुख है और मेरी राय में, परियोजनाओं के पास इसके साथ कुछ लेना देना नहीं है।
आप क्या सलाह देंगे?
यदि आवश्यक हो तो मुझे अधिक जानकारी प्रदान करने में खुशी होगी।
अग्रिम धन्यवाद,
आपको [इस स्टैक ओवरफ्लो प्रश्न] में कुछ उपयोगी मिल सकता है (http://stackoverflow.com/questions/2781383/where-to-put-django-startup-code)। – Robin
मैंने इसे पहले ही देखा है, इस लिंक के स्वीकृत उत्तर में "तैयार()" विधि है जो मैं करता हूं। लेकिन Django डॉक्टर के अनुसार, इस विधि में मॉडल के साथ बातचीत करने के लिए यह एक बुरा अभ्यास है ... –
इस मामले में "स्टार्टअप" का क्या अर्थ है? आम तौर पर आप एक बार वेबसाइट शुरू करते हैं, और फिर यह लगातार चलता है। माइग्रेशन में उदाहरण के बजाय, आपको "स्टार्टअप" पर तालिकाओं को पॉप्युलेट करने की आवश्यकता क्यों है? –