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...

  • Update 1.32.6

    Vaultwarden vaultwarden linux
    1
    0 Stimmen
    1 Beiträge
    124 Aufrufe
    Niemand hat geantwortet
  • Update 1.32.5 - Security Fixes!

    Vaultwarden vaultwarden linux
    1
    0 Stimmen
    1 Beiträge
    121 Aufrufe
    Niemand hat geantwortet
  • Redis ConnectionPool

    Redis redis linux ki-generiert
    2
    0 Stimmen
    2 Beiträge
    283 Aufrufe
    FrankMF
    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
  • NAS 2023 - Software Teil 1

    Angeheftet Verschoben Linux nas linux
    1
    4
    0 Stimmen
    1 Beiträge
    258 Aufrufe
    Niemand hat geantwortet
  • Python - Formatumwandlung str -> float

    Python3 python
    1
    0 Stimmen
    1 Beiträge
    880 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Debian Bullseye Teil 2

    Verschoben ROCKPro64 debian linux rockpro64
    3
    0 Stimmen
    3 Beiträge
    513 Aufrufe
    FrankMF
    Gestern mal das Ganze mit einem Cinnamon Desktop ausprobiert. Eine verschlüsselte Installation auf eine PCIe NVMe SSD. So weit lief das alles reibungslos. Der Cinnamon Desktop hat dann leider keine 3D Unterstützung. Sieht so aus, als wenn keine vernünftigen Grafiktreiber genutzt würden. Da ich auf diesem Gebiet aber eine Null bin, lassen wir das mal so. Außerdem mag ich sowieso keine Desktops auf diesen kleinen SBC. Da fehlt mir einfach der Dampf Gut, was ist mir so aufgefallen? Unbedingt die Daten des Daily Images erneuern, keine alten Images nutzen. Ich hatte da jetzt ein paar Mal Schwierigkeiten mit. Da das ja nun keine Arbeit ist, vorher einfach neu runterladen und Image bauen. Warum zum Henker bootet eigentlich. außer meiner Samsung T5, nichts vom USB3 oder USB-C Port??
  • Projekt NAS - BIOS Update 1.25.0

    Linux linux
    1
    0 Stimmen
    1 Beiträge
    676 Aufrufe
    Niemand hat geantwortet
  • Bananian 16.04 auf einer HDD installieren incl. WLan

    BananaPi bananapi linux
    1
    4
    0 Stimmen
    1 Beiträge
    828 Aufrufe
    Niemand hat geantwortet