Я использую Windows 2016 Server с Apache 2.4.34 (дистрибутив Apache Lounge).У меня есть сервис SOAP в Python 3.4, загруженный с библиотекой mod_wsgi.Когда сервер получает запрос, в журнале ошибок Apache отображается следующее сообщение:
mod_wsgi (pid=2600): Exception occurred processing WSGI script 'C:/Apache24/cgi-bin/wstsibio5/wstsibio5.wsgi'.
Traceback (most recent call last):\r
File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 163, in dispatch\r
ns = NS_RX.findall(xml)\r
TypeError: can't use a string pattern on a bytes-like object\r
\r
During handling of the above exception, another exception occurred:\r
\r
Traceback (most recent call last):\r
File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 499, in __call__\r
return self.handler(environ, start_response)\r
File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 505, in handler\r
return self.do_post(environ, start_response)\r
File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 532, in do_post\r
response = self.dispatcher.dispatch(request)\r
File "C:\\Python34\\lib\\site-packages\\pysimplesoap\\server.py", line 211, in dispatch\r
detail += '\\n\\nXML REQUEST\\n\\n' + xml\r
TypeError: Can't convert 'bytes' object to str implicitly\r
У меня такая же среда, работает нормально на другом сервере, но здесь у меня есть эта проблема, которая сделала меня потерянным2 дня.Ошибка не в моем коде, она возникает только тогда, когда запрос поступает на сервер Apache и передает его в код Python.
Это объявление диспетчера SOAP:
ws = SoapDispatcher(
'my_dispatcher',
location="http://localhost:" + str(puerto) + "/",
action="http://localhost:" + str(puerto) + "/", # SOAPAction
namespace="http://localhost:" + str(puerto) + "/wstsibio4.wsdl",
prefix="ns0",
trace=True,
pretty=True,
debug=True,
ns=True)
Иэта функция зарегистрирована.Есть и другие, но они зависят от ответа этого:
ws.register_function('Presente', presente,
returns={'Respuesta': SimpleXMLElement},
args={'id': int, 'serie': str, 'codigo': int, 'mac': str, 'ip': str,
'reg_marc': int, 'huellas': int, 'huellas_nuevas': int, 'huellas_modificadas':int,
'huellas_eliminadas':int, 'operacion': int, 'mensaje': str, 'fecha_hora': str})
На всякий случай импорт скрипта:
import os
import yaml
import binascii
import datetime
from pysimplesoap.server import SoapDispatcher, SOAPHandler, WSGISOAPHandler
from pysimplesoap.simplexml import SimpleXMLElement
from http.server import HTTPServer
Пожалуйста, помогите.Это то, что я знаю, работает, мне нужно несколько аргументов, прежде чем сказать клиенту, что его сервер является проблемой.
Привет из Эквадора: -D