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

uWSGI, फ्लास्क, sqlalchemy, और postgres:SSL त्रुटि:डिक्रिप्शन विफल या खराब रिकॉर्ड मैक

यह मुद्दा उव्सगी के कांटेक्ट होने के कारण समाप्त हुआ।

मास्टर प्रक्रिया के साथ कई प्रक्रियाओं के साथ काम करते समय, uwsgi मास्टर प्रक्रिया में एप्लिकेशन को इनिशियलाइज़ करता है और फिर एप्लिकेशन को प्रत्येक कार्यकर्ता प्रक्रिया में कॉपी करता है। समस्या यह है कि यदि आप अपने एप्लिकेशन को प्रारंभ करते समय डेटाबेस कनेक्शन खोलते हैं, तो आपके पास एक ही कनेक्शन साझा करने वाली कई प्रक्रियाएं होती हैं, जो उपरोक्त त्रुटि का कारण बनती हैं।

समाधान lazy . सेट करना है uwsgi के लिए कॉन्फ़िगरेशन विकल्प, जो प्रत्येक प्रक्रिया में एप्लिकेशन को पूरी तरह से लोड करने के लिए बाध्य करता है:

<ब्लॉकक्वॉट>

lazy

आलसी मोड सेट करें (मास्टर के बजाय कर्मचारियों में ऐप्स लोड करें)।

इस विकल्प में स्मृति उपयोग के निहितार्थ हो सकते हैं क्योंकि कॉपी-ऑन-राइट सेमेन्टिक्स का उपयोग नहीं किया जा सकता है। जब आलसी सक्षम होता है, तो यूडब्ल्यूएसजीआई के रीलोड सिग्नल द्वारा केवल श्रमिकों को पुनः लोड किया जाएगा; गुरु जीवित रहेगा। जैसे, uWSGI कॉन्फ़िगरेशन परिवर्तन मास्टर द्वारा पुनः लोड करने पर नहीं उठाए जाते हैं।

एक lazy-apps भी है विकल्प:

<ब्लॉकक्वॉट>

lazy-apps

मास्टर के बजाय प्रत्येक कार्यकर्ता में ऐप्स लोड करें।

इस विकल्प में स्मृति उपयोग के निहितार्थ हो सकते हैं क्योंकि कॉपी-ऑन-राइट सेमेन्टिक्स का उपयोग नहीं किया जा सकता है। आलसी के विपरीत, यह केवल एप्लिकेशन लोड करने के तरीके को प्रभावित करता है, न कि पुनः लोड करने पर मास्टर के व्यवहार को।

यह uwsgi कॉन्फ़िगरेशन मेरे लिए काम कर रहा है:

[uwsgi]
socket = /tmp/my_app.sock
logto = /var/log/my_app.log
plugins = python3
virtualenv =  /path/to/my/venv
pythonpath = /path/to/my/app
wsgi-file = /path/to/my/app/application.py
callable = app
max-requests = 1000
chmod-socket = 666
chown-socket = www-data:www-data
master = true
processes = 2
no-orphans = true
log-date = true
uid = www-data
gid = www-data

# the fix
lazy = true
lazy-apps = true


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL बैकअप का स्वचालित परीक्षण

  2. PostgreSQL 9.2 में तालिका को लॉक किए बिना डेटाबेस पंक्तियों को अद्यतन करना

  3. postgresql त्रुटि PANIC:एक मान्य चेकपॉइंट रिकॉर्ड का पता नहीं लगा सका

  4. त्रुटि:Postgres . का उपयोग करके अनुक्रम शहरों_id_seq के लिए अनुमति अस्वीकृत

  5. कैसे सिंध () PostgreSQL में काम करता है