Ошибка после запроса со Spyne и Django-silk
Я уже использую spyne-RPC в качестве сервера SOAP в Django. Я установил django-silk для мониторинга запросов. Для моих запросов GET это работает нормально, но когда я использую POST, я получаю ошибку ниже и время ожидания. Если я уберу джанго-шелк, все будет хорошо. есть проблема в django.py Spyne в
response = WsgiApplication.__call__(self, environ, start_response)
ошибка следующая
Traceback (most recent call last):
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/spyne/server/django.py", line 89, in __call__
response = WsgiApplication.__call__(self, environ, start_response)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/spyne/server/wsgi.py", line 304, in __call__
return self.handle_rpc(req_env, start_response)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/spyne/server/wsgi.py", line 411, in handle_rpc
contexts = self.generate_contexts(initial_ctx, in_string_charset)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/spyne/server/_base.py", line 64, in generate_contexts
self.app.in_protocol.create_in_document(ctx, in_string_charset)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/spyne/protocol/soap/soap11.py", line 202, in create_in_document
charset)
File "/home/test/django/django-apps/venv-test/lib/python2.7/site-packages/spyne/protocol/soap/soap11.py", line 96, in _parse_xml_string
chunk = next(xml_string)
StopIteration
Есть идеи?
1 ответ
Probaby django-silk использует генератор в возвращаемом значении, которое не оставляет данных для клиента.
Я кратко упомяну это в документации: http://spyne.io/docs/2.10/manual/03_types.html
... возвращаемое значение может быть генератором и не должно использоваться, пока не будут возвращены данные клиенту. Это пригодится, например, для пользовательских регистраторов, поскольку они не должны пытаться записать возвращаемое значение (поскольку это будет означать использование генератора).
Если вы можете каким-либо образом использовать генератор и заменить его списком или кортежем с теми же данными, это может сработать.