mod_wsgi error - class .__ dict__ im eingeschränkten Modus nicht verfügbar

Das fing an, uns auf unserem Produktionsserver so richtig in den Arsch zu beißen. Wir haben dies gelegentlich gesehen (für 1 Anfrage pro Woche). Damals haben wir herausgefunden, dass es daran liegt, dass mod_wsgi in einigen Konfigurationen ein paar funky Sachen macht. Da wir den Grund für den Fehler nicht ermitteln konnten, mussten wir uns nicht sofort darum kümmern.

Auf einem unserer Produktionsserver trat dies jedoch heute tatsächlich bei 10% aller Serveranforderungen auf. Das sind 10% aller Serveranforderungen, die mit demselben Fehler fehlgeschlagen sind:

<code>mod_wsgi (pid=1718): Target WSGI script '/installation/dir/our-program/prod-dispatch.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=1718): Exception occurred processing WSGI script '/installation/dir/our-program/prod-dispatch.wsgi'.
Traceback (most recent call last):
  File "/installation/dir/our-program/prod-dispatch.wsgi", line 7, in <module>
    from pyramid.paster import get_app
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/paster.py", line 12, in <module>
    from pyramid.scripting import prepare
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/scripting.py", line 1, in <module>
    from pyramid.config import global_registries
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/config/__init__.py", line 61, in <module>
    from pyramid.config.assets import AssetsConfiguratorMixin
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/config/assets.py", line 83, in <module>
    @implementer(IPackageOverrides)
  File "/installation/dir/venv/local/lib/python2.7/site-packages/zope.interface-3.8.0-py2.7-linux-x86_64.egg/zope/interface/declarations.py", line 480, in __
    classImplements(ob, *self.interfaces)
  File "/installation/dir/venv/local/lib/python2.7/site-packages/zope.interface-3.8.0-py2.7-linux-x86_64.egg/zope/interface/declarations.py", line 445, in cl
    spec = implementedBy(cls)
  File "/installation/dir/venv/local/lib/python2.7/site-packages/zope.interface-3.8.0-py2.7-linux-x86_64.egg/zope/interface/declarations.py", line 285, in im
    spec = cls.__dict__.get('__implemented__')
RuntimeError: class.__dict__ not accessible in restricted mode
</code>

Ubuntu Precise, 64bit, mit dem neuesten Apache, mod_wsgi, Python 2.7, unter Verwendung von mpm_worker + mod_wsgi inDaemon Modus. Dies ist das einzige Programm, das auf dem Server ausgeführt wird, und es gibt nur einen wsgi-Interpreter in der Konfiguration. Liegt das daran, dass mpm_worker neue Threads erzeugt oder was? Noch wichtiger - wie können wir das beheben?

Wir haben die folgenden Möglichkeiten, um Anfragen auf Basis eines Cookies auf 4 Daemon-Prozesse aufzuteilen.

<code>WSGIPythonOptimize 1

WSGIDaemonProcess sticky01 processes=1 threads=16 display-name=%{GROUP}
WSGIDaemonProcess sticky02 processes=1 threads=16 display-name=%{GROUP}
WSGIDaemonProcess sticky03 processes=1 threads=16 display-name=%{GROUP}
WSGIDaemonProcess sticky04 processes=1 threads=16 display-name=%{GROUP}

<VirtualHost *:81>
    ...
    WSGIRestrictProcess sticky01 sticky02 sticky03 sticky04
    WSGIProcessGroup %{ENV:PROCESS}
    ...

    WSGIScriptAlias / /installation/dir/our-program/prod-dispatch.wsgi        
</VirtualHost>
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage