sql >> データベース >  >> RDS >> PostgreSQL

uWSGI、Flask、sqlalchemy、およびpostgres:SSLエラー:復号化に失敗したか、レコードマックが不良

    問題は結局uwsgiの分岐でした。

    マスタープロセスで複数のプロセスを操作する場合、uwsgiはマスタープロセスでアプリケーションを初期化してから、アプリケーションを各ワーカープロセスにコピーします。問題は、アプリケーションの初期化時にデータベース接続を開くと、同じ接続を共有する複数のプロセスが存在するため、上記のエラーが発生することです。

    解決策は、lazyを設定することです uwsgiの構成オプション。これにより、各プロセスでアプリケーションが完全に読み込まれます。

    lazy

    レイジーモードを設定します(マスターではなくワーカーにアプリをロードします)。

    コピーオンライトセマンティクスは使用できないため、このオプションはメモリ使用量に影響を与える可能性があります。レイジーが有効になっている場合、ワーカーのみがuWSGIのリロード信号によってリロードされます。マスターは生き続けます。そのため、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. F#をSalesforce.comに接続する

    2. MapReduceのタイプとフォーマットを理解する

    3. SQLServer2017バックアップ-2

    4. WordPressとNginx、MariaDB 10、PHP7をDebian9にインストールします