flup WSGIServer can't start new thread

Django, Flask, Bottle, WSGI, CGI…
Antworten
Zinober
User
Beiträge: 16
Registriert: Freitag 26. Dezember 2014, 15:58

Guten Abend, ich würde mich sehr freuen, wenn mir hier jemand bezüglich dieses Problems einen Tipp geben könnte:

Ich habe vor ein paar Wochen eine kleine Webanwendung geschrieben, die mit dem flup WSGServer auf einem Shared Host läuft. Leider habe ich keinen Zugriff auf Konfiguration oder Logs. Immerhin lief das Ganze mehrere Wochen problemlos. Seit ein paar Tagen bekomme ich beim Aufruf im Browser einen internal server error. Ich habe irgendwann die eigentliche Anwendung durch diesesTestskript ersetzt:

Code: Alles auswählen

#!/usr/bin/python3.4

def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']

try:
    from flup.server.fcgi import WSGIServer
    WSGIServer(myapp).run()
except:
    import sys, traceback
    traceback.print_exc(file=open("errlog.txt","a"))
In der Datei errlog.txt finde ich nach der Ausführung diese Fehlermeldung:
Traceback (most recent call last):
File "test.py", line 18, in <module>
WSGIServer(myapp).run()
File "/provider/user/.local/lib/python3.4/site-packages/flup/server/fcgi.py", line 96, in __init__
jobArgs=(self, None), **kw)
File "/provider/user/.local/lib/python3.4/site-packages/flup/server/threadedserver.py", line 54, in __init__
self._threadPool = ThreadPool(**kw)
File "/provider/user/.local/lib/python3.4/site-packages/flup/server/threadpool.py", line 58, in __init__
self._start_new_thread()
File "/provider/user/.local/lib/python3.4/site-packages/flup/server/threadpool.py", line 64, in _start_new_thread
t.start()
File "/usr/lib/python3.4/threading.py", line 841, in start
_start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread
Ich habe schon sehr viel dazu gesucht, aber nur wenig gefunden, was mir weiterhilft. Eigentlich benutzen alle Fragen und Beispiele mit dieser Fehlermeldung aktiv Multithreading in irgendeiner Form. Nur in einem Forenbeitrag steht, daß man die Ausführung der WSGI-App selbst wieder beenden müsse:

Code: Alles auswählen

WSGIServer(app, debug=False).run()
sys.exit(-1)
Auf einem anderen Host läuft aber seit Jahren ein WSGI-Skript ohne diese Zeile und ich hatte noch keine Probleme. Dort erscheint allerdings auch ein Python-Prozess nach Aufruf von ps x. Auf dem server, um den es hier geht, erscheint nichts:

Code: Alles auswählen

(18:33:13) [~] ps x
  PID TTY      STAT   TIME COMMAND
13683 ?        SN     0:00 sshd: ssh-user@notty
13684 ?        SNs    0:00 sshd: ssh-user@internal-sftp
13689 ?        SN     0:00 sshd: ssh-user@notty
13690 ?        SNs    0:00 sshd: ssh-user@internal-sftp
19986 ?        S      0:03 php-fpm: pool firma.de
22983 ?        RN     0:00 sshd: ssh-user@pts/0
22986 pts/0    SNs    0:00 -bash
25093 ?        S      0:00 php-fpm: pool firma.de
27723 pts/0    RN+    0:00 ps x
(18:40:05) [~] 
Ich würde mich riesig freuen, wenn mir dazu jemand einen Tipp geben könnte.
Viele Grüße
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das klingt nach einer Laufzeitbeschränkung des Hosts. Der erlaubt keine Threads. Da würde ich mich mal mit deren Support in Verbindung setzen.
Antworten