PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

तालिकाओं में परिवर्तन के बारे में स्वचालित सूचनाएं कैसे प्राप्त करें?

Donmage बिल्कुल सही है - LISTEN और NOTIFY आप क्या चाहते हैं। आपको अभी भी एक पोलिंग लूप की आवश्यकता होगी, लेकिन यह बहुत हल्का है, और इससे पता लगाने योग्य सर्वर लोड नहीं होगा।

अगर आप चाहते हैं psycopg2 किसी भी समय . पर कॉलबैक ट्रिगर करने के लिए अपने प्रोग्राम में, आप इसे थ्रेड बनाकर और उस थ्रेड को पोलिंग लूप निष्पादित करके कर सकते हैं। यह देखने के लिए जांचें कि क्या psycopg2 थ्रेड-सुरक्षित कनेक्शन एक्सेस को लागू करता है; यदि ऐसा नहीं होता है, तो आपको अपनी खुद की लॉकिंग करने की आवश्यकता होगी ताकि आपका पोलिंग लूप केवल कनेक्शन के निष्क्रिय होने पर ही चले, और कोई अन्य प्रश्न मतदान चक्र को बाधित न करें। या आप अपने ईवेंट पोलिंग के लिए बस दूसरे कनेक्शन का उपयोग कर सकते हैं।

किसी भी तरह, जब पृष्ठभूमि थ्रेड जो सूचित घटनाओं के लिए मतदान कर रहा है, तो यह आपके मुख्य प्रोग्राम द्वारा प्रदान किए गए पायथन कॉलबैक फ़ंक्शन को आमंत्रित कर सकता है, जो शेष प्रोग्राम द्वारा साझा किए गए डेटा संरचनाओं/चरों को संशोधित कर सकता है। सावधान रहें, अगर आप ऐसा करते हैं, तो यह जल्दी से बनाए रखने के लिए एक बुरा सपना बन सकता है।

यदि आप उस दृष्टिकोण को अपनाते हैं, तो मैं दृढ़ता से multithreading . का उपयोग करने का सुझाव देता हूं / multiprocessing मॉड्यूल। वे आपके जीवन को व्यापक रूप से आसान बना देंगे, थ्रेड्स के बीच डेटा का आदान-प्रदान करने के सरल तरीके प्रदान करेंगे, और सुनने वाले थ्रेड द्वारा किए गए संशोधनों को सरल और अच्छी तरह से नियंत्रित स्थानों तक सीमित कर देंगे।

यदि प्रक्रियाओं के बजाय धागे का उपयोग कर रहे हैं, तो यह समझना महत्वपूर्ण है कि cPython (यानी "सामान्य पायथन") में आपके पास वास्तविक कॉलबैक इंटरप्ट नहीं हो सकता है, क्योंकि केवल एक थ्रेड cPython में एक बार में निष्पादित हो सकता है। इसके बारे में अधिक समझने के लिए "ग्लोबल इंटरप्रेटर लॉक" (जीआईएल) के बारे में पढ़ें। इस सीमा के कारण (और डिफ़ॉल्ट संगामिति द्वारा साझा-कुछ भी नहीं की आसान, सुरक्षित प्रकृति) मैं अक्सर मल्टीथ्रेडिंग के लिए मल्टीप्रोसेसिंग पसंद करता हूं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON फ़ील्ड के अपडेट डीबी पर बने नहीं रहते हैं

  2. netbeans द्वारा परिभाषित GUI का उपयोग करके postgreSQL में postgres.c में स्थित उपयोगकर्ता-परिभाषित फ़ंक्शन को कॉल करना

  3. क्या पोस्टग्रेज में 1 बाइट नंबर स्टोर करना संभव है?

  4. Psycopg2 :संग्रहीत कार्यविधि में एक तालिका बनाएँ Postgres

  5. टेक्स्ट कॉलम को पोस्टग्रेज करता है जो केवल लोअरकेस की अनुमति देता है/रूपांतरित करता है और कोई विशेष वर्ण नहीं है जैसे:öáè