Webseite, deren Inhalt sich nur einmal am Tag ändert

Django, Flask, Bottle, WSGI, CGI…
Antworten
OTB
User
Beiträge: 15
Registriert: Samstag 24. März 2007, 17:54

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()
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.
OTB
User
Beiträge: 15
Registriert: Samstag 24. März 2007, 17:54

@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)
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.
OTB
User
Beiträge: 15
Registriert: Samstag 24. März 2007, 17:54

@BlackJack
Ja danke für die Tipps, Problem gelöst. Das Einbinden einer sqlite Datenbank ist nach Anleitung auch recht simpel.
minze
User
Beiträge: 1
Registriert: Sonntag 6. September 2015, 15:14

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?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten