Seite 1 von 1

Webseite, deren Inhalt sich nur einmal am Tag ändert

Verfasst: Montag 25. August 2014, 16:06
von OTB
Hallo,

Ich möchte eine einfache Webseite erstellen, deren Inhalt nur einmal täglich durch eine Funktion geändert wird.
Wie muss ich das folgende kleine Beispiel modifizieren, damit die Funktion job() nur einmal am Tag zu einer bestimmten Uhrzeit den Inhalt der Seite ändert?

Code: Alles auswählen

from bottle import template,  Bottle 
import random

def job():
    return random.choice((range(1000000)))


app=Bottle()

@app.route('/')
def index():
    return template("""<p>{{ var }}</p>""", var=job())

app.run()

Re: Webseite, deren Inhalt sich nur einmal am Tag ändert

Verfasst: Montag 25. August 2014, 16:12
von BlackJack
@OTB: Du musst Dir den Wert und das Erzeugungsdatum halt irgendwo merken. Üblicherweise verwendet man bei Webanwendungen dafür eine Datenbank. Und jedes mal beim Abfragen muss man dann schauen ob das letzte Erzeugen schon einen Tag her ist und gegebenenfalls einen neuen Wert erstellen und das speichern. Oder man setzt einen regelmässigen Dienst auf, einen cronjob zum Beispiel, der einmal am Tag den Wert ändert.

Re: Webseite, deren Inhalt sich nur einmal am Tag ändert

Verfasst: Montag 25. August 2014, 17:36
von OTB
@BlackJack

Danke, du hast mich auf den richtigen Pfad gebracht.
(Ich hatte mich mit scheduling und threading verirrt)
cron-jobs werde ich ein andermal ausprobieren



Ich denke vom Grundprinzip ist das aber so schon ausreichend:

Code: Alles auswählen

from bottle import template,  Bottle 
import random
import datetime


updated = datetime.datetime.now()
value = random.choice(range(1000000))
interval = 10 # seconds

def job(interval=interval):
    global updated
    global value
    if datetime.datetime.now() - updated >= datetime.timedelta(seconds=interval):
        updated = datetime.datetime.now()
        value = random.choice(range(1000000))
    return value


app=Bottle()

@app.route('/')
def index():
    return template("""<p>{{ var }}</p>""", var=job())

app.run(reloader=True, debug=True)

Re: Webseite, deren Inhalt sich nur einmal am Tag ändert

Verfasst: Montag 25. August 2014, 17:50
von BlackJack
@OTB: Das ist nicht robust genug, Du musst den Wert irgendwo ausserhalb persistent speichern. Es ist bei WSGI weder garantiert wie lange so ein Prozess oder Thread existiert noch das es davon nur einen geben kann/darf. Das mag beim eingebaute `wsgiref`-Server der Fall sein, aber wenn man das mit einem richtigen Server aufsetzt, dann hat man normalerweise mehr als einen Thread/Prozess und die können auch jederzeit aus verschiedensten Gründen beendet werden.

Re: Webseite, deren Inhalt sich nur einmal am Tag ändert

Verfasst: Dienstag 26. August 2014, 14:19
von OTB
@BlackJack
Ja danke für die Tipps, Problem gelöst. Das Einbinden einer sqlite Datenbank ist nach Anleitung auch recht simpel.

Re: Webseite, deren Inhalt sich nur einmal am Tag ändert

Verfasst: Sonntag 6. September 2015, 15:17
von minze
Hallo! Ich bin auf das Thema zufällig gestoßen, weil ich eine eigene Webseite erstellen möchte. Das Problem besteht darin, dass ich keine Programmierkenntnise habe. Ist es möglich in meinem Fall eine Homepage selbst zu basteln?

Re: Webseite, deren Inhalt sich nur einmal am Tag ändert

Verfasst: Sonntag 6. September 2015, 15:24
von Hyperion
Da bist Du hier im Forum natürlich falsch, denn es geht hier um das Programmieren in Python - das hat per se erst einmal nichts mit dem Erstellen von Webseiten zu tun.

Ich verweise Dich einfach mal zu einer exzellenten Seite rund um das Thema HTML :-)