У меня проблема с Django 1.4 и с Soaplib 2.0.Есть ли тайм-аут, установленный в Django 1.4?
Когда я отправляю от своего клиента запрос с некоторыми большими аргументами, Django создал исключение и отправил электронное письмо этого типа: «[Django] ERROR (EXTERNAL IP): Внутренняя ошибка сервера:/uri/to/soap/услуга "
Traceback (most recent call last):
File "/path/to/my/project/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 129, in get_response
raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name))
ValueError: The view myproject/library.soap.wsgi.view didn't return an HttpResponse object.
Я использую обычный @soap декоратора доступный в http://soaplib.github.io/soaplib/2_0/pages/helloworld.html#declaring-a-soaplib-service на стороне сервера.
Таким образом, это выглядит на конфигурации сервера :
внутри urls.py:
from myproject.server.webservice import WebService
application_view = Application([WebService], 'ws', name='ws').as_django_view()
urlpatterns = patterns(
url(r'^soap/.*', csrf_exempt(application_view)),
)
внутри MyProject/сервер/webservice.py:
from soaplib.core.service import DefinitionBase
class WebService(DefinitionBase):
'''
The actual webservice class.
This defines methods exposed to clients.
'''
def __init__(self, environ):
'''
This saves a reference to the request environment on the current instance
'''
self.environ = environ
super(WebService, self).__init__(environ)
@soap(Array(Array(String)), _returns=Integer)
def my_method(self, params):
return self.process(params)
def process(self, params):
#DO SOMETHING HERE
На на стороне клиента электронной:
#cfg is my configuration file
#params is a dictionary
client = SoapClient(
location = cfg.location,
action = cfg.action, # SOAPAction
namespace = cfg.namespace, #"http://example.com/sample.wsdl",
soap_ns= cfg.soap_ns,
trace = cfg.trace,
ns = cfg.ns)
response = client.my_method(params=params)
Я попытался отправить очень большой словарь от моего клиента, и он не работает.
Я подозреваю, что Django установил тайм-аут и закрыл мое соединение во время процесса. Есть ли в любом случае увеличение тайм-аута или проблема, вызванная чем-то другим?
Кстати, я использую только Django. Я не настраивал Apache или Nginx.
Это, похоже, не имеет никакого отношения к таймаутам. Вы должны показать код для этого представления. –
Благодарим вас за отзыв. Я добавил дополнительную информацию, чтобы помочь вам понять мою проблему. – user3843970