Python und Apache2

Django, Flask, Bottle, WSGI, CGI…
Antworten
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

Hallo alle zusammen,

ich versuche gerade auf meinen Apache2 Server Python zu configurieren. Hab das erstmal mit mod_python versucht, hat aber nicht ganz geklappt, hab nur den Quellcode im Browser gehen..

Was würde sich den empfehlen "mob_python" oder "mod_wsgi"? Oder kommt ich ohne "Django" nicht weiter? Würde gerne auf so ein großes FrameWork verzichten und es so schlank wie möglich halten.

Es sollen in moment auch kein HTML Inhalten mit Python angezeigt werden. Der Script soll eine GET/POST anfrage von eime SmartPhone bearbeiten können. Zur zeit ist kein Web UI geplant.
BlackJack

@optimum: Auf jeden Fall `mod_wsgi`. Allerdings würde ich dort trotzdem noch zu einem Mikrorahmenwerk raten. Bottle zum Beispiel. Das ist *eine* Datei die man statt sie zu installieren auch einfach mit zu den eigenen Modulen packen kann.

Beispiel:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
from bottle import Bottle, request

app = Bottle()


@app.get('/hello/<name>')
def get_something(name):
    return {
        'response': u'Hello {0}{1}'.format(
            name.capitalize(), request.params.get('punctuation', '!')
        )
    }


if __name__ == '__main__':
    app.run(debug=True, reload=True)
Das liefert bei 'http://127.0.0.1:8080/hello/peter?punctuation=.' automatisch JSON mit passendem Mime-Typ aus:
[codebox=text file=Unbenannt.txt]HTTP/1.0 200 OK
Date: Mon, 31 Oct 2016 14:18:10 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Length: 28
Content-Type: application/json

{"response": "Hello Peter."}[/code]
Analog zu `get()` gibt es auch die ganzen anderen HTTP-Methoden als Dekoratoren, also zum Beispiel `post()`, `put()`, und so weiter. Wenn der Client den JSON-Content-Type sendet, dann steht das Ergebnis auch über das `request`-Objekt zur Verfügung, ohne das man das selber dekodieren muss.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

mod_python ist seit Jahren tot und der de-facto Standard für Python Webanwendungen ist WSGI. Was du beim Apache über das besagte mod_wsgi anbindest.

Und da du nacktest WSGI gar nicht selber in deinem Code umsetzen möchtest, nimmst du ein Modul wie Bottle, dass die Sache viel einfacher macht.

Gruß, noisefloor
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

Danke noisefloor und BlackJack für die Tipps.
Werde das nun versuchen umzusetzen mit Bottle und `mod_wsgi`.

Muss mir das genau anschauen wie ich das alles zusammen bringen kann.

Ich werde mich aufjeden Fall noch mal melden :)
Antworten