Python auf Webhosting

  • Hi OlMi1_YT I NETCRAFT,

    ich nehme an, dass Deine python-bot.py eine Hintergrundanwendung ist und keine Webseite ausgibt. Kannst Du mehr zur Funktionionalität sagen?
    Vermutlich musst Du das Script als Cronjob betreiben.


    Danke und beste Grüße

  • Moin


    Ich gehe einfach davon aus, dass "bot.py" eine Hintergrundanwendung ist.


    Du hast probiert das mit Passenger zu machen (das Zeug mit dem Screenshot) ... das ist aber unnötig aufwendig.


    Als Cronjob kannst du es nicht direkt laufen lassen, denn hier bist du im chroot gefangen. Du hast nur auf die Programme Zugriff, die du auch per ssh benutzen kannst - somit nicht Python.


    Du könntest jedoch dein Skript per CGI (als "Website") laufen lassen. Dafür musst du CGI-Unterstützung unter dem Punkt Hosting-Einstellungen aktivieren. Wenn du jetzt bot.cgi mit folgendem Shebang und so in den cgi-bin Ordner im Website Root hochlädst, kannst du es unter domain.de/cgi-bin/bot.cgi starten.

    Python: bot.cgi
    1. #!/usr/bin/python3
    2. # -*- coding: UTF-8 -*-
    3. print("Content-Type: text/plain")
    4. print()
    5. # ... dein Python 3 Code (bei mir ist es python3.5) ...

    Immer wenn du die URL domain.de/cgi-bin/bot.cgi aufrufst wird das Skript gestartet. Das kann jetzt mit einem Cronjob automatisiert werden.

    Unter Aufgabe planen musst du eine Neue anlegen mit der Einstellung diese URL abzurufen. Das kannst du jetzt Täglich oder sonst wie machen (z.B. im Cron-Stil hier ein Hilfs-Tool https://crontab.guru/).


    Wenn du noch extra Python Packages (z.B. von pip) brauchst, musst du auf deinem PC die venv env erstellen und da die Packages installieren.

    Jetzt hast du zwei einfache Optionen, diese für bot.cgi verfügbar zu machen:

    1. Die Packages von env/lib/python-x/site-packages direkt in den cgi-bin Ordner legen. (Dann wird alles vollgemüllt)

    2. Oder die Packages von env/lib/python-x/site-packages in den Ordner cgi-bin/meine-packageszu legen und dann mit folgendem Code zu "aktivieren" (dem Python Path hinzuzufügen):

    Python: bot.cgi
    1. # shebang und so
    2. import sys
    3. # sys.path[0] entspricht dem "cgi-bin" Ordner
    4. sys.path.insert(1, sys.path[0]+"/meine-packages")
    5. # ... ab hier kannst du deine Packages importieren.


    Viel Glück ;)