9 διακομιστές Web Python που πρέπει να δοκιμάσετε για το επόμενο έργο σας

Σε αυτόν τον κατάλογο, παρουσιάζουμε αρκετούς διακομιστές ιστού Python που μπορείτε να χρησιμοποιήσετε για να αναπτύξετε τις εφαρμογές Python σας.

Θα ξεκινήσουμε κατανοώντας πώς λειτουργούν οι διακομιστές ιστού και την ανάγκη για διεπαφές πύλης διακομιστή. Στη συνέχεια, θα εξετάσουμε τη λίστα των διακομιστών ιστού Python μαζί με τα κύρια χαρακτηριστικά τους. Τα περισσότερα από αυτά είναι διαθέσιμα ως πακέτα PyPI που μπορείτε να εγκαταστήσετε και να αρχίσετε να χρησιμοποιείτε στα έργα σας.

Ας ξεκινήσουμε!

Τι είναι ο Διακομιστής Ιστού;

Κατά την ανάπτυξη μιας εφαρμογής Python, θα χρησιμοποιήσετε τον διακομιστή ανάπτυξης για να δοκιμάσετε την εφαρμογή σας. Ωστόσο, μόλις ολοκληρωθεί η ανάπτυξη, θα πρέπει να αναπτύξετε την εφαρμογή σας σε έναν διακομιστή ποιότητας παραγωγής. Μεταξύ πολλών επιπέδων πρόσθετης λειτουργικότητας στην κορυφή, ένας διακομιστής ιστού θα πρέπει να έχει τη βασική λειτουργικότητα ενός διακομιστή HTTP.

Ο διακομιστής ιστού Python θα πρέπει να μπορεί να χειρίζεται αιτήματα HTTP (απλά αιτήματα HTTP όπως GET, PUT και POST) από πελάτες, όπως προγράμματα περιήγησης Ιστού, και να επιστρέφει την απάντηση. Αυτή η απάντηση μπορεί να περιλαμβάνει τον κωδικό κατάστασης HTTP που υποδεικνύει εάν το αίτημα υποβλήθηκε σε επεξεργασία με επιτυχία ή όχι. Μπορεί να αποτελείται από ιστοσελίδες HTML και ημιδομημένα δεδομένα όπως JSON, XML και άλλα.

ASGI εναντίον WSGI: Κατανόηση των διεπαφών της πύλης διακομιστή

Ας υποθέσουμε ότι έχετε αναπτύξει μια εφαρμογή Python σε ένα πλαίσιο της επιλογής σας, για παράδειγμα, Django ή Flask. Ένας συμβατικός διακομιστής μπορεί να μην μπορεί να κατανοήσει και να επεξεργαστεί τα αιτήματα που απευθύνονται στην εφαρμογή Python. Εδώ μπαίνουν στο παιχνίδι οι διεπαφές πύλης διακομιστή.

Αυτή η διεπαφή πύλης μπορεί να είναι μια διεπαφή πύλης διακομιστή Web (WSGI) ή μια διεπαφή ασύγχρονης πύλης διακομιστή (ASGI). Ο διακομιστής Ιστού λαμβάνει ένα αίτημα από έναν πελάτη, το οποίο στη συνέχεια ανακατευθύνει στη διεπαφή της πύλης διακομιστή. Η διεπαφή (WSGI/ASGI) αλληλεπιδρά με την εφαρμογή Python μέσω ενός εκτεθειμένου καλούμενου.

Η διεπαφή πύλης διακομιστή Web (WSGI) χειρίζεται αιτήματα διαδοχικά. Εάν υπάρχουν πολλά αργά αιτήματα HTTP, τότε θα επηρεάσουν την απόδοση.

Το Asynchronous Server Gateway Interface, ή ASGI, είναι διάδοχος του WSGI και έχει την πρόσθετη δυνατότητα να χειρίζεται αιτήματα ασύγχρονα.

  Μπορείτε να στείλετε μήνυμα σε κάποιον που αποκλείσατε στο iPhone;

Ας υποθέσουμε ότι ένα αίτημα που εξυπηρετείται αυτήν τη στιγμή απαιτεί ανάγνωση μιας βάσης δεδομένων (που μπορεί ενδεχομένως να πάρει πολύ χρόνο) και περιμένει την απάντηση. Όταν το πρώτο αίτημα περιμένει απάντηση, το ASGI μπορεί να χειριστεί ένα δεύτερο εισερχόμενο αίτημα.

Αυτό έρχεται σε αντίθεση με το WSGI, όπου το πρώτο αίτημα πρέπει να υποβληθεί σε επεξεργασία για το δεύτερο αίτημα. Επομένως, η χρήση ASGI μπορεί να οδηγήσει σε αυξημένη απόδοση. Το ASGI σάς επιτρέπει επίσης να χρησιμοποιείτε ασύγχρονες δυνατότητες Python στην εφαρμογή σας.

Διακομιστές Ιστού Python

Τώρα, απαριθμήστε τους διακομιστές Ιστού που μπορείτε να χρησιμοποιήσετε για τις εφαρμογές Python σας. Έχουμε συμπεριλάβει επίσης ορισμένα πλαίσια που παρέχουν άμεση υποστήριξη για διακομιστές που είναι έτοιμοι για παραγωγή. Αυτή δεν είναι μια εξαντλητική λίστα και οι παρακάτω προτάσεις διακομιστή ιστού δεν έχουν κάποια συγκεκριμένη σειρά.

Uvicorn

Εάν είστε εξοικειωμένοι με την ανάπτυξη εφαρμογών με το FastAPI, θα έχετε συναντήσει το Uvicorn, μια εφαρμογή διακομιστή ιστού. Το Uvicorn είναι μια υλοποίηση διακομιστή ASGI για την Python.

Για να εγκαταστήσετε το Uvicorn και τις σχετικές εξαρτήσεις χρησιμοποιώντας το pip, εκτελέστε την ακόλουθη εντολή:

$ pip install uvicorn[standard] 
# includes installation of optional and Cython-based dependencies

Τα ακόλουθα είναι τα κύρια χαρακτηριστικά του Uvicorn:

  • Υλοποίηση ΑΣΓΗ
  • Υποστήριξη για εκτέλεση εφαρμογών από ασύγχρονο περιβάλλον Python
  • Το εργαλείο γραμμής εντολών με μια εκτενή λίστα επιλογών
  • Υποστηρίζει εκτελούμενες εφαρμογές από εργοστασιακές λειτουργίες
  • Παρέχει δυνατότητες για τον έλεγχο των παρουσιών διακομιστή μέσω προγραμματισμού

Gunicorn

Ο Gunicorn είναι ένας διακομιστής WSGI για εφαρμογές Python, γνωστός για τις προηγμένες δυνατότητες διαχείρισης διεργασιών.

Το Uvicorn προσφέρει μια τάξη εργαζομένων στο Gunicorn, επιτρέποντάς σας να επιτύχετε πλεονεκτήματα απόδοσης και διαχείρισης διεργασιών ταυτόχρονα. Αυτή η σελίδα τεκμηρίωσης περιέχει λεπτομέρειες σχετικά με την ανάπτυξη του Gunicorn.

Εάν έχετε Python 3.5 και νεότερη έκδοση, μπορείτε να εγκαταστήσετε το Gunicorn χρησιμοποιώντας το pip:

$ pip install gunicorn

Τα ακόλουθα είναι τα κύρια χαρακτηριστικά του Gunicorn:

  • Απλό και γρήγορο
  • Συμβατό με πολλά πλαίσια web
  • Υποστήριξη για χρήση με διακομιστή μεσολάβησης HTTP
  • Προηγμένη διαχείριση διαδικασιών

CherryPy

Το CherryPy είναι ένα πλαίσιο ιστού Python—όπως το Django, το Flask και το FastAPI—αλλά όχι τόσο δημοφιλές όσο αυτά τα πλαίσια. Με πολλές σταθερές εκδόσεις, το CherryPy υπάρχει και έχει εξελιχθεί σε ένα πλήρες πλαίσιο για πάνω από μια δεκαετία. Έχει επίσης μια υποστηρικτική κοινότητα προγραμματιστών.

  14 Καλύτερα Συντομευτικά URL για Μάρκετινγκ επωνυμίας

Μπορείτε να δείτε το ενδιαφέρον Zen of CherryPy, το οποίο μεταφέρει την ουσία ότι το CherryPy είναι ένα απλό και μινιμαλιστικό αλλά ισχυρό πλαίσιο.

Το CherryPy είναι ένα πλαίσιο Python και όχι ένας διακομιστής ιστού, αλλά βρίσκεται στη λίστα μας καθώς υποστηρίζει εγγενώς έναν διακομιστή ποιότητας παραγωγής — σε αντίθεση με τα περισσότερα άλλα πλαίσια.

Για να εγκαταστήσετε το CherryPy και να ξεκινήσετε, εκτελέστε:

$ pip install CherryPy

Τα ακόλουθα είναι τα κύρια χαρακτηριστικά του CherryPy:

  • Pythonic πλαίσιο που χρησιμοποιεί αντικειμενοστραφή Python. κατάλληλο για αρχάριους
  • Υποστήριξη για έναν διακομιστή HTTP έτοιμο για παραγωγή, Cheroot
  • Πιο εύκολο στην εκμάθηση από άλλα πλαίσια web, όπως το Django
  • Υποστήριξη για τη δημιουργία και την ανάπτυξη απλών εφαρμογών ιστού σε μικροϋπηρεσίες

Δάφνη

Το Django είναι ένα από τα πιο δημοφιλή διαδικτυακά πλαίσια Python. Εάν έχετε αναπτύξει εφαρμογές με το Django, πιθανότατα θα έχετε χρησιμοποιήσει τον διακομιστή web Daphne. Το Daphne είναι μία από τις πρώτες υλοποιήσεις διακομιστή ASGI που χρησιμοποιήθηκε ως αναφορά για υλοποιήσεις διακομιστή ASGI.

Το Daphne είναι διαθέσιμο ως πακέτο PyPI που μπορείτε να εγκαταστήσετε χρησιμοποιώντας το pip.

$ pip install daphne

Ακολουθεί ένα λεπτομερές μάθημα που θα σας καθοδηγήσει στη δημιουργία μιας εφαρμογής Python που είναι έτοιμη για παραγωγή πλήρους στοίβας.

Τα ακόλουθα είναι τα κύρια χαρακτηριστικά της Δάφνης:

  • Ευρέως υιοθετημένο σε περιβάλλοντα παραγωγής
  • Αναφορά για όλες τις υλοποιήσεις διακομιστή ASGI
  • Υποστήριξη για πρωτόκολλα HTTP, HTTP2 και WebSocket

Python Trio

Το έργο Trio στοχεύει να παρέχει ασύγχρονες δυνατότητες I/O ποιότητας παραγωγής: υποστήριξη για παράλληλη I/O και ταυτόχρονη. Αυτό το έργο έχει επίσης αρκετές βιβλιοθήκες ιστού και HTTP Python.

Μπορείτε να εγκαταστήσετε την πιο πρόσφατη έκδοση του Trio (Ιούνιος 2022) από το PyPI.

$ pip install trio

Ακολουθεί μια λίστα με χρήσιμες βιβλιοθήκες Trio για προγραμματισμό Ιστού με Python:

  • hypercorn: Το Hypercorn είναι ένας διακομιστής ASGI που υποστηρίζει HTTP
  • muffin: Το Muffin είναι ένα web πλαίσιο ASGI για την Python
  • startlette: Το Starlette είναι ένα ελαφρύ πλαίσιο ASGI
  • trio-websocket: υποστήριξη για διακομιστή και πελάτη WebSocket
  • httpx: πελάτης HTTP για Python

Twisted Web

Το Twisted είναι ένα πλαίσιο για εφαρμογές Python. Αυτό το πλαίσιο που βασίζεται σε συμβάντα περιλαμβάνει μια ενότητα για προγραμματισμό Ιστού που ονομάζεται twisted.web.

  Πώς να απενεργοποιήσετε την επιλογή Samsung Discover από την οθόνη εφαρμογής

Μπορείτε να εγκαταστήσετε το Twisted και τις σχετικές μονάδες χρησιμοποιώντας το pip:

$ pip install Twisted

Τα ακόλουθα είναι τα κύρια χαρακτηριστικά του Twisted:

  • Λειτουργίες φιλικές προς τους προγραμματιστές, όπως δοκιμή μονάδας και έλεγχος στατικού κώδικα
  • Το twisted.web παρέχει διακομιστή WSGI και υποστήριξη για πελάτες και διακομιστές HTTP

AIOHTTP

Το AIOHTTP είναι μια βιβλιοθήκη Python που παρέχει δυνατότητες πελάτη και διακομιστή μέσω των API του πελάτη και του διακομιστή.

Ακολουθεί ένα χρήσιμο βίντεο που εξηγεί τις δυνατότητες ασύγχρονου προγραμματισμού στην πλευρά του πελάτη για να επιταχύνει σημαντικά τα αιτήματα προς API.

Τα ακόλουθα είναι τα κύρια χαρακτηριστικά του AIOHTTP:

  • Υποστήριξη τόσο για τον διακομιστή HTTP όσο και για τη λειτουργικότητα του πελάτη
  • Υποστήριξη για την καταγραφή για τη διευκόλυνση του εντοπισμού σφαλμάτων. παρέχει καταγραφή για έναν πελάτη, διακομιστή, υποδοχές Ιστού και πολλά άλλα
  • Εγγενής υποστήριξη για δοκιμές μέσω του pytest Πρόσθετο για δοκιμή: pytest-aiohttp, το οποίο είναι διαθέσιμο ως πακέτο PyPI

Ανεμοστρόβιλος

Το Tornado είναι ένα άλλο πλαίσιο web Python που υποστηρίζει ασύγχρονη δικτύωση. Τα τελευταία χρόνια, υπήρξαν πολλές σταθερές εκδόσεις του Tornado – η πιο πρόσφατη έκδοση 6.2, κυκλοφόρησε τον Ιούλιο του 2022. Επί του παρόντος, το Tornado υποστηρίζει Python 3.7 και νεότερες εκδόσεις.

Όπως τα περισσότερα πακέτα αυτής της λίστας, το Tornado μπορεί επίσης να εγκατασταθεί χρησιμοποιώντας pip:

$ pip install tornado

Τα ακόλουθα είναι τα κύρια χαρακτηριστικά του Tornado:

  • Υποστήριξη για διακομιστή HTTP tornado.httpδιακομιστής και πελάτης
  • Δυνατότητα κλιμάκωσης και χρησιμοποιεί I/O χωρίς αποκλεισμό δικτύου
  • Κατάλληλο για εφαρμογές που απαιτούν συνδεσιμότητα για πολύ μεγαλύτερο χρονικό διάστημα
  • Βοηθητικά προγράμματα για καταγραφή, δοκιμή μονάδων και πολλά άλλα
  • Απρόσκοπτη ενοποίηση με υπηρεσίες για έλεγχο ταυτότητας

Μάινχελντ

Ο Meinheld είναι ένας διακομιστής WSGI για την Python. Χρησιμοποιεί και δημιουργεί υπάρχουσες βιβλιοθήκες για το χειρισμό συμβάντων και την επεξεργασία αιτημάτων HTTP.

Μπορείτε να εγκαταστήσετε το Meinheld χρησιμοποιώντας το pip:

$ pip install meinheld

Μερικά χαρακτηριστικά του Meinheld:

  • Χρησιμοποιεί τη βιβλιοθήκη http-parser για να χειρίζεται εισερχόμενα αιτήματα HTTP
  • Χτίζεται στην κορυφή της βιβλιοθήκης picoev για χειρισμό συμβάντων

συμπέρασμα

Ελπίζω να βρήκατε χρήσιμη αυτή τη λίστα των διακομιστών ιστού Python. Φροντίστε να τα δοκιμάσετε στα μελλοντικά σας έργα. Έχουμε παραθέσει τα βασικά χαρακτηριστικά. για να κατανοήσετε πλήρως τις εξαρτήσεις και τον τρόπο λειτουργίας τους, θα πρέπει να τις χρησιμοποιήσετε στις εφαρμογές σας. 👩🏽‍💻

Εάν θέλετε να ανεβάσετε τις δεξιότητές σας στην Python, εξετάστε το ενδεχόμενο να ελέγξετε τη βιβλιοθήκη των οδηγών Python του grtechpc.org. Καλή κωδικοποίηση!