Skip to content

Redis ConnectionPool

Redis
  • Schnell nachdem ich meinen Redis Stack Server auf eine VM ausgelagert hatte, stellte ich morgens beim Kaffee fest, das meine Flask Anwendung nicht mehr läuft. Mein PC ist meistens im Standby.

    broken pipe error (so in etwa)
    

    Um das zu beheben, musste ich jedes mal die Anwendung neu starten. Nervig! Das muss doch auch besser gehen und man müsste der Flask Anwendung das nur erklären 🙂

    Da man nicht alles wissen kann, nutze ich dann gerne für solche Fälle - ChatGPT Ich stellte also meine Frage und bekam das hier als Antwort.

    self.pool = redis.ConnectionPool(
                host=host,
                port=port,
                db=db,
                password=config.REDIS_PASSWORD,
                # Auto-Reconnect einstellen
                retry_on_timeout=True,
                # Optional: Weitere Einstellungen wie maximale Wiederverbindungsversuche,
                # Timeout-Werte, etc. können hier konfiguriert werden
                health_check_interval=30  # Überprüft die Verbindung alle 30 Sekunden
            )
    

    ChatGPT empfahl also einen Redis ConnectionPool anzulegen. In der ersten Antwort fehlte noch der health_check_interval, wie sich aber raus stellte ist der nötig.

    Somit sieht meine Datenbank Klasse wie folgt aus (nur der init Teil

    class PortfolioSettings:
    
        def __init__(self, host=config.SERVER_IP, port=6379, db=None):
            if db is None:  # If db is not provided explicitly, use TEST_MODE to decide
                if config.TEST_MODE == 1:
                    db = config.TEST[0]
                else:
                    db = config.LIVE[0]
    
            # Verwende einen Connection Pool
            self.pool = redis.ConnectionPool(
                host=host,
                port=port,
                db=db,
                password=config.REDIS_PASSWORD,
                # Auto-Reconnect einstellen
                retry_on_timeout=True,
                # Optional: Weitere Einstellungen wie maximale Wiederverbindungsversuche,
                # Timeout-Werte, etc. können hier konfiguriert werden
                health_check_interval=30  # Überprüft die Verbindung alle 30 Sekunden
            )
    
            self.client = redis.Redis(connection_pool=self.pool)
    

    Und damit funktioniert das bis jetzt sehr gut. Jetzt müsste ich nur noch wissen, wie der Redis ConnectionPool funktioniert!??

  • Die Antwort von ChatGPT wie der Redis ConnectionPool funktioniert. Ein paar Dinge finde ich komisch.

    https://chat.openai.com/share/b10fdadc-2c9b-404a-bc99-c883d110d6af

  • Redis - Keys von einer DB zu einer anderen DB kopieren

    Redis
    1
    1
    0 Stimmen
    1 Beiträge
    136 Aufrufe
    Niemand hat geantwortet
  • Portfolio - mein kleines Flask Projekt

    Python3
    5
    0 Stimmen
    5 Beiträge
    220 Aufrufe
    FrankMF
    Hab ChatGPT nochmal nach der Installation auf einem Production Server befragt. ChatGPT Certainly! Here's a short example of the steps you can follow to deploy a Flask application on a production server using Nginx and Gunicorn: Prepare your server: Set up a server (e.g., using a cloud provider like AWS, DigitalOcean, or a dedicated server) and ensure it has a clean, up-to-date installation of a Linux distribution (e.g., Ubuntu or CentOS). Install required software: Install necessary software packages on your server. You'll need Python, pip (Python package manager), Nginx, and Gunicorn. You can use your distribution's package manager (e.g., apt for Ubuntu or yum for CentOS) to install these dependencies. Deploy your Flask application: Copy your Flask application code and any required dependencies to your server. Set up a virtual environment (optional but recommended): Create a virtual environment for your Flask application to isolate its dependencies. You can use venv or virtualenv for this purpose. Install Flask and any required Python packages within your virtual environment: pip install flask Test your Flask application: Ensure your Flask application runs correctly within your server's virtual environment. Configure Gunicorn: Create a Gunicorn configuration file (e.g., gunicorn_config.py) to specify the settings for running your Flask application. Here's a simple example: workers = 4 # Number of Gunicorn worker processes bind = '0.0.0.0:8000' # The address and port Gunicorn should listen on Start Gunicorn: Start Gunicorn with your Flask application: gunicorn -c gunicorn_config.py your_app:app Configure Nginx: Create an Nginx server block (often located in /etc/nginx/sites-available) to define how Nginx should handle incoming requests. Here's a simplified example: server { listen 80; server_name your_domain.com www.your_domain.com; location / { proxy_pass http://127.0.0.1:8000; # Pass requests to Gunicorn proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } Enable the Nginx server block and restart Nginx: sudo ln -s /etc/nginx/sites-available/your_config /etc/nginx/sites-enabled/ sudo nginx -t # Test Nginx configuration sudo systemctl restart nginx Configure your DNS: Point your domain name to your server's IP address. Secure your server (optional but recommended): Set up SSL/TLS certificates for your domain to enable HTTPS. You can use Let's Encrypt for free SSL certificates. Monitor your application: Set up monitoring tools and logs to keep track of your application's performance and troubleshoot any issues. These are the basic steps to deploy a Flask application on a production server with Nginx and Gunicorn. Please note that this is a simplified example, and there are many additional considerations, such as database configuration, security, and optimization, depending on your specific application and requirements. It's also important to keep your server and software up to date and follow security best practices to ensure the stability and security of your production environment. Das werde ich doch mal ausprobieren
  • Firefox - Dolphin Dateibrowser benutzen

    Linux
    1
    1
    0 Stimmen
    1 Beiträge
    475 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Collabora Installation Debian Bookworm 12

    Nextcloud
    2
    3
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF
    Ok, ich war leider nicht in der Lage den CODE-Server hinter einem Proxy zu installieren. Das CODE-Team scheint Docker zu lieben und das andere nur am Rande zu machen. Ohne Liebe Da ich extrem lange Ladezeiten hatte und die Software insgesamt nicht den Eindruck machte, das man das gerne produktiv auf einem Server nutzen möchte, habe ich den Server eben wieder gelöscht. Jetzt fehlt mir leider, die deepl.com Anbindung, aber das kann man ja auch über die Webseite nutzen. Ich nutze jetzt wieder den eingebauten CODE-Server, der eigentlich ein App-Image ist. [image: 1694677466020-28c41010-5ce1-4f7c-89d5-1c9b253011d0-grafik.png] Der klare Vorteil, es läuft incl. Dokumenten Freigabe Nicht vergessen, unter Allow list for WOPI requests kommen die Server Adressen des Nextcloud-Webservers rein! [image: 1694677621827-c1a06c2c-86b5-4750-a062-7ba9d8dd8253-grafik.png]
  • NAS 2023 - Software Teil 2

    Angeheftet Verschoben Linux
    1
    4
    0 Stimmen
    1 Beiträge
    213 Aufrufe
    Niemand hat geantwortet
  • Nextcloud 23.0.3

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    154 Aufrufe
    Niemand hat geantwortet
  • Kopia - HTTP/2 deadlock

    Kopia
    1
    0 Stimmen
    1 Beiträge
    233 Aufrufe
    Niemand hat geantwortet
  • Projekt NAS - BIOS Update 1.25.0

    Linux
    1
    0 Stimmen
    1 Beiträge
    662 Aufrufe
    Niemand hat geantwortet