Django 3.0 asgi / async समर्थन जोड़ रहा है और इसके साथ एक async संदर्भ में तुल्यकालिक अनुरोध करने के चारों ओर एक गार्ड है । समवर्ती रूप से, IPython ने सिर्फ शीर्ष स्तर के async / प्रतीक्षा समर्थन को जोड़ा , जो लगता है कि एक डिफ़ॉल्ट ईवेंट लूप के अंदर पूरे दुभाषिया सत्र को चला रहा है।
दुर्भाग्य से इन दो महान जोड़ के संयोजन का मतलब है कि किसी भी jupyter नोटबुक में किसी भी django ORM ऑपरेशन एक SynchronousOnlyOperationअपवाद का कारण बनता है:
SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async.
जैसा कि अपवाद संदेश कहता है, प्रत्येक ORM कॉल को एक sync_to_async()तरह से लपेटना संभव है :
images = await sync_to_async(Image.objects.all)()
लेकिन यह बहुत सुविधाजनक नहीं है, विशेष रूप से संबंधित क्षेत्रों के लिए जो आमतौर पर विशेषता लुकअप पर हल किया जाएगा।
(मैं %autoawait offजादू की कोशिश की, लेकिन यह काम नहीं किया, डॉक्स पर एक त्वरित नज़र से मैं यह मान रहा हूँ क्योंकि ipykernels हमेशा एसिंको लूप में चलता है)
तो क्या django में async संदर्भ जांच में सिंक को या तो अक्षम करने का एक तरीका है या एक तुल्यकालिक संदर्भ में ipykernel चलाने का कोई तरीका है?
संदर्भ के लिए: मैंने एक डेटा साइंस पैकेज लिखा है जो एक बैकएंड सर्वर के रूप में django का उपयोग करता है, लेकिन ORM के शीर्ष पर एक ज्यूपिटर आधारित इंटरफ़ेस को भी उजागर करता है जो आपको डेटा, ट्रैक मशीन लर्निंग प्रयोगों को साफ करने और एक जॉप नोटबुक में प्रशिक्षण कार्यों को चलाने की अनुमति देता है ।
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"? मैंने ज्यूपिटर के अंदर की कोशिश की और settings.py में भी जोड़ा। अभी भी मेरी जुपिटर त्रुटि दे रही है