PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

uWSGI, Flask, sqlalchemy, dan postgres:Kesalahan SSL:dekripsi gagal atau catatan buruk mac

Masalahnya akhirnya menjadi forking uwsgi.

Saat bekerja dengan beberapa proses dengan proses master, uwsgi menginisialisasi aplikasi dalam proses master dan kemudian menyalin aplikasi ke setiap proses pekerja. Masalahnya adalah jika Anda membuka koneksi database saat menginisialisasi aplikasi, Anda kemudian memiliki beberapa proses yang berbagi koneksi yang sama, yang menyebabkan kesalahan di atas.

Solusinya adalah dengan mengatur lazy opsi konfigurasi untuk uwsgi, yang memaksa pemuatan aplikasi secara lengkap di setiap proses:

lazy

Setel mode malas (muat aplikasi di pekerja, bukan master).

Opsi ini mungkin memiliki implikasi penggunaan memori karena semantik Copy-on-Write tidak dapat digunakan. Saat lazy diaktifkan, hanya pekerja yang akan dimuat ulang oleh sinyal isi ulang uWSGI; tuannya akan tetap hidup. Dengan demikian, perubahan konfigurasi uWSGI tidak diambil saat memuat ulang oleh master.

Ada juga lazy-apps pilihan:

lazy-apps

Muat aplikasi di setiap pekerja, bukan master.

Opsi ini mungkin memiliki implikasi penggunaan memori karena semantik Copy-on-Write tidak dapat digunakan. Tidak seperti lazy, ini hanya memengaruhi cara aplikasi dimuat, bukan perilaku master saat memuat ulang.

Konfigurasi uwsgi ini akhirnya berfungsi untuk saya:

[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. Bagaimana Cos() Bekerja di PostgreSQL

  2. Cara memperbarui ID urutan postgreSQL secara massal untuk semua tabel

  3. Masukkan, pada pembaruan duplikat di PostgreSQL?

  4. Kapan memilih untuk memperbarui mengunci dan membuka kunci?

  5. Menyiapkan Django dan PostgreSQL pada dua instans EC2 yang berbeda