Skip to content

PyWebIO vs. Flask

Python3
2 1 236
  • 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...

  • NodeBB - 4.2.2

    NodeBB nodebb linux
    1
    0 Stimmen
    1 Beiträge
    53 Aufrufe
    Niemand hat geantwortet
  • Restic feiert 10. Geburtstag

    Restic restic linux
    1
    1
    0 Stimmen
    1 Beiträge
    163 Aufrufe
    Niemand hat geantwortet
  • HSTS - Sicherheitsmechanismus für HTTPS-Verbindungen

    Linux hsts linux https
    1
    0 Stimmen
    1 Beiträge
    95 Aufrufe
    Niemand hat geantwortet
  • Kernel 5.19-rc1

    Quartz64 linux quartz64
    2
    0 Stimmen
    2 Beiträge
    200 Aufrufe
    FrankMF
    Man kann dann den aktuell Kernel [root@frank-pc ~]# uname -a Linux frank-pc 5.17.0-3-MANJARO-ARM-Q64 #1 SMP PREEMPT Sat Jun 4 14:34:03 UTC 2022 aarch64 GNU/Linux mit diesem Befehl aktualisieren sudo pacman -S linux-rc linux-rc-headers Man wechselt dann vom Zweig linux-quartz64 auf linux-rc. Der Zweig linux-rc entspricht dem Mainline Kernel. Achtung! Zum Zeitpunkt der Erstellung des Beitrages crasht das Eure Installation!! Ursache ist, das es aktuell diesen Kernel linux-rc-5.18.rc7-7-aarch64 installiert, dieser enthält aber keine Unterstützung für das Modell B. Und zum Nachschauen, ob schon was Neues da ist [root@frank-pc ~]# pacman -Ss linux-rc linux-rc-headers core/linux-rc-headers 5.18.rc7-7 Header files and scripts for building modules for linux kernel - AArch64 multi-platform (release candidate)
  • Qt 5 Designer

    Python3 python
    1
    4
    0 Stimmen
    1 Beiträge
    137 Aufrufe
    Niemand hat geantwortet
  • NodeBB - Update auf v1.18.6

    NodeBB nodebb nodejs linux
    1
    1
    0 Stimmen
    1 Beiträge
    165 Aufrufe
    Niemand hat geantwortet
  • OpenWRT - Firmware Selektor

    Verschoben OpenWRT & Ubiquiti ER-X openwrt linux
    1
    1
    0 Stimmen
    1 Beiträge
    265 Aufrufe
    Niemand hat geantwortet
  • NGINX - Installation

    NGINX nginx linux
    1
    2
    0 Stimmen
    1 Beiträge
    352 Aufrufe
    Niemand hat geantwortet