Hallo Freunde,
ich kann bislang nur wenig Python. Ich will mich aber jetzt daran machen, ein kleines Webprojekt auf pythonbasis zu bauen - sofern Python die folgenden Kriterien erfüllt.
Ich habe breits ein wenig im Forum herumgelesen, aber keine klare Antwort auf meine Fragen(Kriterien) gefunden. Vielleicht habe ich auch nicht lange genug herumgelesen.
Wie auch immer.
K1)
Bei Python ist ja ein HTTP-Server mit dabei. Kann der auch SSL, so dass Verschlüsselung der Seiten, die dadrauf laufen, möglich ist?
K2)
Kann man durch diesen HTTP-Server auch Dateien hochladen über den Webbrowser?
K3)
Nehmen wir an, auf dem HTTP-Server befindet sich eine Datei, die Werte beinhaltet. Diese Werte können von Usern interaktiv über ein Webinterface verändert werden. Dabei ist wichtig, dass Änderungen, die durch User A gemacht worden sind, User B auch sofort sehen kann.
Beispiel: Es gibt eine Int Variable mit Wert 0. User A und User B sind auf dem Server und sehen beide die 0. User A drückt den Button, der die Variable inkrementiert (also 0+1=1). Die Null wird zur 1 und bruchteile einer Sekunde später drückt User B auf den inkrementierenden Button und aus der 1 wird eine 2.
Kann man das realisieren, oder muß ich dazu eine Datenbank verwenden?
Wenn ich dazu eine Datenbank verwenden muß, ist es dann möglich, dass ich das PythonSkript, dass die Brücke zwischen Userinterface und der Datenbank bildet, in eine selbstausführbare Datei für Linux (oder auch Windows) packe und diese selbstausführbare Datei über den mitgelieferten Webserver ausführen lasse?
Ganz allgemeine Frage:
Kann man selbstgeschriebene Skripte, die man dann logischerweise in eine EXE kodiert auch verkaufen?
Viele liebe Grüße an alle!
d0d0
SSL, py2exe für Linux und statische Variablen und mehr
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi d0d0!
Siehe http://www.python-forum.de/viewtopic.php?t=5253
Bei größeren Websites empfehle ich dir aber eher den Apache als Webserver zu verwenden. Dieser ist ziemlich ausgereift und kann auch Python-Skripte ausführen. Als CGI oder wenn es schneller sein soll als mod_python, FastCGI oder WSGI.
Wenn du mehr mit Internet machen möchtest und auch die Möglichkeit hast, einen eigenen Server zu betreiben oder Root-Zugang zu einem Internet-Server hast, dann empfehle ich dir Zope als Web-Framework. Es dauert zwar ein paar Tage, sich in Zope einzuarbeiten, dafür kann Zope aber auch alles was du je brauchen könntest. Siehe auch http://gerold.bcom.at/zope_plone/zope_a ... n_windows/
mfg
Gerold
Bei Python ist KEIN HTTP-Server mit dabei. Aber du kannst dir mit Python einen HTTP-Server programmieren.d0d0 hat geschrieben:Bei Python ist ja ein HTTP-Server mit dabei. Kann der auch SSL, so dass Verschlüsselung der Seiten, die dadrauf laufen, möglich ist?
Siehe http://www.python-forum.de/viewtopic.php?t=5253
Bei größeren Websites empfehle ich dir aber eher den Apache als Webserver zu verwenden. Dieser ist ziemlich ausgereift und kann auch Python-Skripte ausführen. Als CGI oder wenn es schneller sein soll als mod_python, FastCGI oder WSGI.
Natürlich.d0d0 hat geschrieben:Kann man durch diesen HTTP-Server auch Dateien hochladen über den Webbrowser?
So etwas ähnliches habe ich kürzlich für einen Freund programmiert. Es ist zwar kein Meisterstück, aber es funktioniert. Nimm dafür das Webserver-Skript von diesem Thread Siehe http://www.python-forum.de/viewtopic.php?t=5253. Speichere folgendes Skript in den Ordner in dem auch das Server-Skript liegt. Starte den Server und öffne im Browser die im Serverfenster angegebene URL....d0d0 hat geschrieben:Dabei ist wichtig, dass Änderungen, die durch User A gemacht worden sind, User B auch sofort sehen kann.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1
print "Content-Type: text/plain"
print
import cgi
import cgitb; cgitb.enable()
import os
import os.path
import sys
import time
import random
import string
import glob
from pprint import pprint
BESTLIST_MAX_ENTRIES = 20
LOCKFILE_MAX_ATTEMPTS = 50
LOCKFILE_MAX_AGE_SECONDS = 20
#----------------------------------------------------------------------
def bestenliste(
stunden_neu,
minuten_neu,
sekunden_neu,
email_neu,
name_neu,
max = BESTLIST_MAX_ENTRIES
):
"""
Liest die Bestenliste aus, setzt den neuen Wert und gibt die
Bestenliste zurueck.
"""
# Bestenliste einlesen
if os.path.exists("bestenliste.txt"):
f = file("bestenliste.txt", "rU")
lines = f.read().strip().split("\n")
f.close()
else:
lines = []
# Bestenliste in Liste schreiben
blist = []
if lines:
for line in lines:
if line:
blist.append(
line.split(";", 4)
)
# Neuen Wert zu Bestenliste hinzufügen
blist.append(
[
"%02i" % stunden_neu,
"%02i" % minuten_neu,
"%02i" % sekunden_neu,
email_neu,
name_neu,
]
)
# Bestenliste sortieren
blist.sort()
# Bestenliste neu schreiben
f = file("bestenliste.txt", "w")
for item in blist[:BESTLIST_MAX_ENTRIES]:
f.write(
"%s;%s;%s;%s;%s\n" % (
item[0], item[1], item[2], item[3], item[4]
)
)
f.close()
# Rückgabe
return blist[:BESTLIST_MAX_ENTRIES]
# Werte entgegennehmen
fs = cgi.FieldStorage()
stunden = fs.getvalue("stunden")
minuten = fs.getvalue("minuten")
sekunden = fs.getvalue("sekunden")
email = fs.getvalue("email")
name = fs.getvalue("name")
# Werte auswerten
if stunden and minuten and sekunden and email and name:
try:
# Lockfile schreiben
lockfile_name = "%s_%s.lock" % (
time.time(),
random.choice(string.ascii_lowercase)
)
f = file(lockfile_name, "w")
f.write(str(os.getpid()))
f.close()
# Pruefen ob andere Lockfiles existieren
for i in range(LOCKFILE_MAX_ATTEMPTS):
# Alle Lockfiles auslesen
lockfiles = glob.glob("*.lock")
lockfiles.remove(lockfile_name)
if len(lockfiles) == 0:
# Es existieren keine anderen Lockfiles >> los geht's.
# Logfile befuellen und auslesen
blist = bestenliste(
int(stunden), int(minuten), int(sekunden), email, name
)
# Ergebnis anzeigen
pprint(blist)
# Schleife abbrechen
break
else:
# Alle Lockfiles durchlaufen und die, die älter als
# LOCKFILE_MAX_AGE_SECONDS Min. sind
# löschen.
#os.path.getctime(filename)
for lockfile in lockfiles:
ctime = os.path.getctime(lockfile)
if (ctime + LOCKFILE_MAX_AGE_SECONDS) < time.time():
try:
os.remove(lockfile)
except:
pass
time.sleep(0.5)
finally:
# Lockfile loeschen
try:
os.remove(lockfile_name)
except:
pass
else:
# Es wurden nicht alle benoetigten Daten uebergeben
print (
"Es muessen die Parameter 'stunden', 'minuten', 'sekunden', \n"
"'email', 'name' und 'zeit' uebergeben werden. \n"
"\n"
"Das sieht z.B. so aus: \n"
"http://localhost:8081/bestenliste.py?"
"stunden=55&minuten=55&sekunden=55&email=email@hostname.at&name=Name \n"
)
Ja natürlich.d0d0 hat geschrieben:Kann man selbstgeschriebene Skripte, die man dann logischerweise in eine EXE kodiert auch verkaufen?
Wenn du mehr mit Internet machen möchtest und auch die Möglichkeit hast, einen eigenen Server zu betreiben oder Root-Zugang zu einem Internet-Server hast, dann empfehle ich dir Zope als Web-Framework. Es dauert zwar ein paar Tage, sich in Zope einzuarbeiten, dafür kann Zope aber auch alles was du je brauchen könntest. Siehe auch http://gerold.bcom.at/zope_plone/zope_a ... n_windows/
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.