【问题标题】:Post-request error with Spyne and Django-silkSpyne 和 Django-silk 的请求后错误
【发布时间】:2019-02-12 15:11:34
【问题描述】:

我已经在 Django 中使用 spyne-RPC 作为 SOAP 服务器。我已经安装了 django-silk 来监控请求。对于我的 GET 请求,它可以正常工作,但是当我使用 POST 时,我得到下面的错误和超时。如果我删除 django-silk 它可以正常工作。 spyne 的 django.py 有一个问题,位于

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

有什么想法吗?

【问题讨论】:

    标签: python django soap spyne django-silk


    【解决方案1】:

    Probaby django-silk 在返回值中使用生成器,没有为客户端留下任何数据。

    我在文档中简要提到了这一点:http://spyne.io/docs/2.10/manual/03_types.html#arrays

    ...返回值可以是一个生成器,不能被消耗,除非 将数据返回给客户端。这很方便,例如风俗 记录器,因为他们不应该尝试记录返回值(因为 将意味着消耗发电机)。

    如果您可以以某种方式自己使用生成器并将其替换为具有相同数据的列表或元组,那么它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      相关资源
      最近更新 更多