Ошибка после запроса со Spyne и Django-silk - PullRequest
0 голосов
/ 12 февраля 2019

Я уже использую 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 Ответ

0 голосов
/ 13 февраля 2019

Probaby django-silk использует генератор в возвращаемом значении, которое не оставляет данных для клиента.

Я кратко упомяну это в документации: http://spyne.io/docs/2.10/manual/03_types.html#arrays

... возвращаемое значение может быть генератором и не должно использоваться, пока не будут возвращены данные клиенту.Это удобно, например, для пользовательских регистраторов, поскольку они не должны пытаться записать возвращаемое значение (поскольку это будет означать использование генератора).

Если вы можете каким-то образом потреблять генератор самостоятельно и заменить его навместо этого список или кортеж с теми же данными, он может работать.

...