Ich habe festgestellt, dass meine Website nicht mehr reaktionsfähig ist, während auf demselben Webserver ein Python-Skript ausgeführt wird. Weitere Clients, die auf die Website zugreifen möchten, werden nicht bedient, was bis hin zu einem internen Serverfehler führt mit entsprechender Fehlerseite. Mein Script erstellt eine Powerpoint Präsentation und stellt auch eine Anfrage an OpenAI – es funktioniert reibungslos, nur eben lähmt es während den 10-20 Sekunden Bearbeitungszeit die gesamte Seite. Ich habe verschiedene Ansätze aus meiner Recherche heraus ausprobiert, darunter die Verwendung von Sockets in nicht-blockierender Form, sowie das Starten eines Subprocess, das war aber alles nichts. Ich suche eigentlich eine ganz einfache Lösung, um das Python-Skript einfach im Hintergrund auszuführen, ohne dass es den Zugriff auf die Website für andere Benutzer blockiert. Kenne mich aber zu wenig aus mit dem Setup von Webservern.

Auf dem Server liegt das Script in einer Environment, die ich jedes mal öffne wenn ich es aufrufe. Konkret rufe ich es so aus einer PHP Datei heraus auf:
Code: Alles auswählen
$venv_path = "env";
$python_script = "my_env/apps/$py_script/app.py";
chdir("../../..");
$command = "source $venv_path/bin/activate && export OMP_NUM_THREADS=1 && python3 $python_script $arg1";
$descriptorspec = array(
0 => array("pipe", "r"), // stdin
1 => array("pipe", "w"), // stdout
2 => array("pipe", "w") // stderr
);
$process = proc_open("/bin/bash -c '" . $command . "'", $descriptorspec, $pipes, null, null, array('binary_pipes' => true));

Ich verfüge über ein gutes Performance-Paket bei meinem Webhosting-Anbieter, sodass dies nicht der Grund für die Probleme sein sollte. Der Server läuft unter Linux mit Apache.
Wie bleibt die Website ansteuerbar, auch wenn das Script ausgeführt wird? Danke euch für euer Interesse, bin für jede Anregung dankbar.
LG
Marvin