Skip to content

PyWebIO vs. Flask

Python3
  • Seit einigen Monaten, entwickle ich zum Lernen mit Flask. Davor habe ich schon mal PyWebIO eingesetzt. Beides sind Webframeworks. Was sind so meine Gedanken dazu.

    Code Beispiel PyWebIO

    @use_scope('backup')
        def backup():
            clear_scope()
            BackupList.load_json()
    
            # we build header and tdata for table
            tab_init = []
    
            # Print data from backups
            for count, value in enumerate(backups):
                # print("Control", count, backups[value].name)
    
                if count == 0:
                    tab_init.append(['No.', 'Backup name of the restic data backup', 'Actions'])
    
                if backups[value].init == "1":
                    button_list = {"label": 'Init', "value": 'Init', "color": 'primary', "disabled": True}
                    tab_init.append([count + 1,
                                     backups[count].name,
                                     put_buttons([
                                          button_list],
                                         onclick=partial(actions, count + 1))
                                     ])
                else:
                    button_list = {'label': 'Init', 'value': 'Init', 'color': 'primary', "disabled": False}
                    tab_init.append([count + 1,
                                     backups[count].name,
                                     put_buttons([
                                          button_list],
                                         onclick=partial(actions, count + 1))
                                     ])
    

    PyWebIO - Pro

    Contra

    • Nur für kleine Projekte geeignet
    • Kleine Community

    Code Beispiel Flask

    @home.route('/dashboard', methods=['GET'])
    @login_required
    def dashboard():
        refreshed = False
        refreshed = 'refreshed' in request.args
        # print("Refreshed", refreshed)
    
        data2 = all_data.get_all_stocks()
    
        data = sorted(data2.values(), key=lambda x: x['name_stock'], reverse=False)
    
        sums = []
        total_sum = all_data.get_total_sum('total_sum')
        sums.append(float(total_sum) if total_sum is not None else 0.0)
        old_total_sum = all_data.get_total_sum('old_total_sum')
        sums.append(float(old_total_sum) if total_sum is not None else 0.0)
        # print("SUMS", sums)
    
        return render_template('dashboard.html',
                               refreshed=refreshed,
                               data=data,
                               sums=sums,
                               active_menu='dashboard',
                               test_mode=config.TEST_MODE)
    

    Flask - Pro

    • Auch für große Projekte geeignet
    • Gute Dokumentation
    • Große aktive Community

    Contra

    • Leider muss man sich auch viel mit HTML, CSS & Javascript beschäftigen

    Fazit

    An PyWebIO hat mir sehr gut gefallen, das man so ziemlich alles mit Python Code machen kann, bis man an die Grenzen stößt. Mit Flask kann man wesentlich komplexere Webanwendungen bauen, dank Blueprints kann man das auch ordentlich strukturieren. Was mich sofort an Flask genervt hat ist, das man nun wieder HTML, CSS & Javascript drauf haben sollte. Aber, das ist halt auch der große Vorteil gegenüber PyWebIO, man ist wesentlich flexibler.

    Ich habe mir vorgenommen, mein vorhandenes Projekt ResticUI auf Flask umzubauen. Mal schauen, wie sich das so entwickelt. Mein aktuelles privates Flask Projekt (portfolio) ist mittlerweile gut ausgereift ist aber leider zu sehr auf meine privaten Anforderungen zugeschnitten, so dass ich es nicht public stellen kann. Evtl. baue ich das später mal entsprechend um.

    Happy Coding!

  • Mist, jetzt habe ich auch noch Streamlit gefunden. Jetzt geht mir langsam die Zeit aus...

  • 0 Stimmen
    1 Beiträge
    96 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    5 Beiträge
    146 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 😎

  • Restic UI - PyWebIO

    Python3
    3
    0 Stimmen
    3 Beiträge
    257 Aufrufe
    FrankMF

  • Manjaro KDE Plasma 21.2.2

    Linux
    5
    0 Stimmen
    5 Beiträge
    151 Aufrufe
    FrankMF

    Ok, geht nicht. Manjaro und ich werden leider keine Freunde. Da sind zu viele Dinge, die nicht besonders gut umgesetzt sind. Heute mal den Test gemacht und mein geliebtes Linux Mint Cinnamon installiert.

    Passwort für die Verschlüsselung nimmt anstandslos deutsche Sonderzeichen an WiFi geht auch nicht mit WPA3, man kann aber einfach auf WPA2 umstellen und das funktioniert.

    Damit endet dieser Versuch jetzt..

  • Proxmox - Backup Server WakeOnLan

    Proxmox
    1
    0 Stimmen
    1 Beiträge
    566 Aufrufe
    Niemand hat geantwortet
  • Debian Buster 10.6 released

    Linux
    1
    0 Stimmen
    1 Beiträge
    195 Aufrufe
    Niemand hat geantwortet
  • Kopia - Verbessertes UI in Arbeit

    Kopia
    4
    0 Stimmen
    4 Beiträge
    365 Aufrufe
    FrankMF

    Nächste tolle Neuerung, man kann die Datensicherung jetzt sofort mounten. Sich alles ansehen usw.

    Bildschirmfoto vom 2020-09-08 21-56-39.png

  • Restic - Ein Backupkonzept

    Angeheftet Restic
    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet