django использует spyne lib на ответе сервера apache нет содержимого

Я разработал веб-сервис, используя spyne.protocol.soap.soap11при запуске в команде Django (python manage runserver) она работает как положено:

1. Я могу получить файл wsdl из $url? Wsdl

2. позвоните в веб-сервис и получите ответ

но при развертывании на сервере Apache он отвечает $url?wsdl со статусом 200 OK, но без содержимого:

Connection →close
Content-Length →0
Content-Type →text/xml; charset=utf-8
Date →Mon, 16 Oct 2017 02:22:08 GMT
Server →Apache/2.2.15 (CentOS)

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

Примечание: все вышеперечисленное работает на той же машине, на том же Python

Я искал в Google и Stackru, но нет похожих вопросов.

1 class AbnormalService(ServiceBase):
2 @rpc(Unicode, Unicode, Integer, Integer, Integer, _returns=Unicode)
3 def abnormal(ctx, username, password, locationID, abnormalID, smallAbnormalID):
4    try:
5        AbnormalRecord.objects.create(location_id=locationID, abnormal_id=abnormalID, smallAbnormal_id=smallAbnormalID)
6   except Exception as ex:
7        return str(ex)
8   return "OK"

Это мой веб-сервис Spyne. И строка 5 действительно выполнялась на сервере Apache (База данных добавила строку). И это должно отвечать как:

<?xml version='1.0' encoding='UTF-8'?>
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="spyne.examples.django">
<soap11env:Body>
    <tns:abnormalResponse>
        <tns:abnormalResult>OK</tns:abnormalResult>
    </tns:abnormalResponse>
</soap11env:Body>
</soap11env:Envelope>

Но ответ с заголовком Content-Length:0 и веб-службой
Я попытался добавить WSGIApplicationGroup %{GLOBAL} в httpd.conf, ничего не изменилось. Моя настройка Django: urls:

url(r'^uploadrecords', DjangoView.as_view(
    services=[views.AbnormalService], tns='spyne.examples.django',
        in_protocol=Soap11(validator='lxml'),
        out_protocol=Soap11(),
        cache_wsdl=False)),
    url(r'^api/', DjangoView.as_view(application=views.app)),`<br>

views:

    class AbnormalService(ServiceBase):
    @rpc(Unicode, Unicode, Integer, Integer, Integer, _returns=Unicode)
    def abnormal(ctx, username, password, locationID, abnormalID, smallAbnormalID):
        try:
            AbnormalRecord.objects.create(location_id=locationID, abnormal_id=abnormalID, smallAbnormal_id=smallAbnormalID)
        except Exception as ex:
            return str(ex)
        return "OK"

    app = Application([AbnormalService],
    'spyne.examples.django',
    in_protocol=Soap11(validator='lxml'),
    out_protocol=Soap11(validator='lxml'),
    )
    abnormal_service = csrf_exempt(DjangoApplication(app))

настройки:

   WSGIApplicationGroup %{GLOBAL}
    WSGIPythonPath /var/www/html/kanban
    Listen 9000
    <VirtualHost *:9000>
    <Directory "/var/www/html/kanban/kanban">
<Files wsgi.py>
    Order allow,deny
    Allow from all
</Files>
WSGIApplicationGroup %{GLOBAL}
</Directory>



WSGIScriptAlias / /var/www/html/kanban/kanban/wsgi.py

WSGIApplicationGroup %{GLOBAL}
    ServerName dummy-host.example.com
    ErrorLog logs/django_log
    CustomLog logs/django_custom_log common
</VirtualHost>

0 ответов

Другие вопросы по тегам