Exec функция Python не работает в модуле Spyne
#!/usr/bin/env`` python
# encoding: utf8
import logging
logging.basicConfig(level=logging.DEBUG)
from spyne.decorator import srpc
from spyne import Application, rpc, ServiceBase, \
Integer, Unicode
from spyne import Iterable
from spyne.protocol.http import HttpRpc
from spyne.protocol.json import JsonDocument
from spyne.server.wsgi import WsgiApplication
class Test(ServiceBase):
@rpc(Integer, _returns=Iterable(Unicode))
def say_hello(self, times):
for i in range(times):
yield "say hello."
print(i)
@rpc(Unicode, _returns=Unicode)
def execcodes(ctx, codes):
exec(codes)
print('|'.join(locals())
print('|'.join(globals())
if __name__ == '__main__':
from wsgiref.simple_server import make_server
logging.basicConfig(level=logging.DEBUG)
application = Application([Test], 'spyne.examples.hello.http',
in_protocol=HttpRpc(validator='soft'),
out_protocol=JsonDocument(ignore_wrappers=True),
)
wsgi_application = WsgiApplication(application)
server = make_server('0.0.0.0', 22346, wsgi_application)
logging.info("listening to http://127.0.0.1:22346")
logging.info("wsdl is at: http://localhost:22346/?wsdl")
server.serve_forever()
Я попытался настроить веб-сервис, с помощью которого пользователь передает блок кода Python, а сервис возвращает что-то обратно, но кажется, что функция python exec не работает в spyne. Я запускаю функцию execcodes с помощью 127.0.0.1:22346/Test?execcodes='a=1\nb=2\nprint(a+b)\n', ошибки в exec не возникает, но в журнале нет печати, и Я не могу найти a и b как в локальных, так и в глобальных файлах, так что я не понимаю, исполняются ли мои коды? если он выполняется, где я могу найти переменные?