Я очень озадачен этой ошибкой. В ранее функциональном приложении Pylons (работающем на apache/mod_wsgi) Маршруты взорвались. Когда я пытаюсь получить доступ к моему приложению, независимо от того, какой URL я использую, я получаю страницу «Ошибка сервера» Apache и следующую трассировку в /var/log/apache2/error.log.Маршруты/Пилоны не доходят до моего кода
[Sat Oct 02 2010] WSGI Variables
[Sat Oct 02 2010] --------------
[Sat Oct 02 2010] application: <beaker.middleware.SessionMiddleware object at 0xb885be6c>
[Sat Oct 02 2010] beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0xb885be6c>>
[Sat Oct 02 2010] beaker.session: {'_accessed_time': 1286040208.138742, '_creation_time': 1286040208.138742}
[Sat Oct 02 2010] mod_wsgi.application_group: '192.168.1.51|'
[Sat Oct 02 2010] mod_wsgi.callable_object: 'application'
[Sat Oct 02 2010] mod_wsgi.handler_script: ''
[Sat Oct 02 2010] mod_wsgi.input_chunked: '0'
[Sat Oct 02 2010] mod_wsgi.listener_host: ''
[Sat Oct 02 2010] mod_wsgi.listener_port: '80'
[Sat Oct 02 2010] mod_wsgi.process_group: ''
[Sat Oct 02 2010] mod_wsgi.request_handler: 'wsgi-script'
[Sat Oct 02 2010] mod_wsgi.script_reloading: '1'
[Sat Oct 02 2010] mod_wsgi.version: (3, 3)
[Sat Oct 02 2010] paste.registry: <paste.registry.Registry object at 0xb7e373ac>
[Sat Oct 02 2010] paste.throw_errors: True
[Sat Oct 02 2010] wsgi process: 'Multi process AND threads (?)'
[Sat Oct 02 2010] wsgi.file_wrapper: <built-in method file_wrapper of mod_wsgi.Adapter object at 0xb70c77b8>
[Sat Oct 02 2010] wsgi.version: (1, 1)
[Sat Oct 02 2010] [client 192.168.1.50]
------------------------------------------------------------
[Sat Oct 02 2010] mod_wsgi (pid=13389): Exception occurred processing WSGI script '/var/pylons/myapp/myapp.wsgi'.
[Sat Oct 02 2010] Traceback (most recent call last):
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Paste-1.7.4-py2.7.egg/paste/cascade.py", line 130, in __call__
[Sat Oct 02 2010] return self.apps[-1](environ, start_response)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Paste-1.7.4-py2.7.egg/paste/registry.py", line 375, in __call__
[Sat Oct 02 2010] app_iter = self.application(environ, start_response)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/middleware.py", line 163, in __call__
[Sat Oct 02 2010] self.app, new_environ, catch_exc_info=True)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Pylons-1.0-py2.7.egg/pylons/util.py", line 48, in call_wsgi_application
[Sat Oct 02 2010] app_iter = application(environ, start_response)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/WebError-0.10.2-py2.7.egg/weberror/errormiddleware.py", line 156, in __call__
[Sat Oct 02 2010] return self.application(environ, start_response)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Beaker-1.5.4-py2.7.egg/beaker/middleware.py", line 152, in __call__
[Sat Oct 02 2010] return self.wrap_app(environ, session_start_response)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Routes-1.12.3-py2.7.egg/routes/middleware.py", line 84, in __call__
[Sat Oct 02 2010] results = self.mapper.routematch(environ=environ)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Routes-1.12.3-py2.7.egg/routes/mapper.py", line 690, in routematch
[Sat Oct 02 2010] result = self._match(url, environ)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Routes-1.12.3-py2.7.egg/routes/mapper.py", line 609, in _match
[Sat Oct 02 2010] self.create_regs()
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Routes-1.12.3-py2.7.egg/routes/mapper.py", line 560, in create_regs
[Sat Oct 02 2010] self._create_regs(*args, **kwargs)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Routes-1.12.3-py2.7.egg/routes/mapper.py", line 578, in _create_regs
[Sat Oct 02 2010] route.makeregexp(clist)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/site-packages/Routes-1.12.3-py2.7.egg/routes/route.py", line 306, in makeregexp
[Sat Oct 02 2010] self.regmatch = re.compile(reg)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/re.py", line 190, in compile
[Sat Oct 02 2010] return _compile(pattern, flags)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/re.py", line 243, in _compile
[Sat Oct 02 2010] p = sre_compile.compile(pattern, flags)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/sre_compile.py", line 500, in compile
[Sat Oct 02 2010] p = sre_parse.parse(p, flags)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/sre_parse.py", line 673, in parse
[Sat Oct 02 2010] p = _parse_sub(source, pattern, 0)
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/sre_parse.py", line 308, in _parse_sub
[Sat Oct 02 2010] itemsappend(_parse(source, state))
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/sre_parse.py", line 544, in _parse
[Sat Oct 02 2010] if not isname(name):
[Sat Oct 02 2010] File "/usr/local/lib/python2.7/sre_parse.py", line 218, in isname
[Sat Oct 02 2010] if not isident(name[0]):
[Sat Oct 02 2010] IndexError: string index out of range
Это меня очень смущен, потому что кажется, что Routes падает и умирает прежде, чем это когда-либо прикасается мой код! Единственное, что касается этого, это мой файл myapp.wsgi; ни myapp.wsgi, ни мои файлы development.ini не изменились между последним рабочим состоянием приложения и теперь только файлы модели/контроллера/шаблона. Я не обновлял пакеты между последним рабочим состоянием приложения и теперь. Файлы, которые я изменил в своем приложении, - это файлы контроллеров, моделей и шаблонов - ни один из них не отображается в трассировке. Я думал, что, возможно, я изменил routing.py, не запомнив его, а трассировка приведет к модулям обработки регулярных выражений, поэтому я зашел в routing.py и закомментировал все строки, использующие Routes 'requirements feature - без изменений, с той же ошибкой. Повторно с большим количеством apache2ctl restart
- без изменений, те же ошибки.
Что в синих пятнах происходит здесь, и что в моем приложении могло вызвать это?
Решение: Преступник был невинной маршрут -
map.redirect('/foo/*', '/', _redirect_code='301 Moved Permanently')
.
Похоже, что голая звездочка сделала Маршруты броска шаткого. Я скорректировал его, установив маршрут матча в '/foo/{bar}'
, а затем опустив значение бара на полу. Я все еще озадачен тем, почему Маршруты потерпели крах, вместо того, чтобы бросать что-то вроде SyntaxError, но, эй, теперь это работает.
Право: разделите и победите время! –
Это привело к решению проблемы. Благодарю. –