Suds 4.1 Beta Assertion Failure

Discussion in 'Python' started by 1stpoint@gmail.com, Jun 9, 2014.

  1. Guest

    Hello group, I have been using Python suds to try to consume a web service. I am able to use tools like SOAPUI and it works but when I it in python I get Assertion Failure.

    Here is my code

    if __name__== '__main__':
    from suds.client import Client
    import logging
    logging.basicConfig(filename="suds.log",level=logging.INFO)
    logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)
    obieeserver='http://hostname:port/analytics-ws/saw.dll/wsdl/v7'
    rptRef='myReport'
    paramRpt=''
    client = Client(obieeserver)
    sessionid = client.service['SAWSessionService'].logon('uid','pwd')
    print 'sessionid=',sessionid

    reportservice=client.service['ReportEditingService']
    result=reportservice.generateReportSQL(rptRef, paramRpt, sessionid)

    print 'result=',type(result)

    Here is my output:

    sessionid= fq3c0f0ec7hrql07fspk7fdu4esih16pp4eql9a
    Traceback (most recent call last):
    File "obieetest.py", line 90, in <module>
    result=reportservice.generateReportSQL(rptRef, paramRpt, sessionid)
    File "build\bdist.win32\egg\suds\client.py", line 542, in __call__
    File "build\bdist.win32\egg\suds\client.py", line 602, in invoke
    File "build\bdist.win32\egg\suds\client.py", line 651, in send
    File "build\bdist.win32\egg\suds\client.py", line 688, in succeeded
    File "build\bdist.win32\egg\suds\bindings\binding.py", line 151, in get_reply
    File "build\bdist.win32\egg\suds\bindings\binding.py", line 182, in detect_fault
    suds.WebFault: Server raised fault: 'Assertion failure: criteria at line 296 of /net/adcnas420/export/ifarm_base/ifarm_views/aime_bifndn_430300/bifndn/analytics_web/main/project/webformatengine/formatengine.cpp'
     
    , Jun 9, 2014
    #1
    1. Advertisements

  2. dieter Guest

    This is a message from the webserver. The "Assertion failure" happens
    there (in the server) and not on the client side.

    Usually, an "Assertion failure" is a programming error (of the component
    which checks the assertion). However, in some cases, other components
    (such as the client, in your case) might be directly responsible
    or have at least triggered the problem.


    I would approach as follows: Tell "suds" to log the outgoing messages;
    lock at those messages whether they are correct. If they are,
    contact the web service administrator and ask him for help.
     
    dieter, Jun 10, 2014
    #2
    1. Advertisements

  3. Guest

    It turns out I was passing the parameters incorrectly to the generateReportSQL method.

    This is what I had:
    result=reportservice.generateReportSQL(rptRef, paramRpt, sessionid)

    This is what works:
    result=XMLservice.generateReportSQL({'reportPath':rptRef},sessionid)

    I have another issue. When I make the call to return data apparently the result set is too big for suds and I get a MemoryError.

    Here is my code snippet:
    print 'executing SQL Query:',len(logicalSQL)
    executionOptions={'async':False,'maxRowsPerPage':50,'refresh':True,'presentationInfo':False,'type':'Q1'}
    XMLservice=obiclient.service['XmlViewService']
    result=XMLservice.executeSQLQuery(logicalSQL,'SAWRowsetData',executionOptions,sessionid)

    When I run it I get:
    executing SQL Query: 5968
    Traceback (most recent call last):
    File "C:\temp\obiee\obieetest.py", line 105, in <module>
    result=XMLservice.executeSQLQuery(logicalSQL,'SAWRowsetData',executionOptions,sessionid)
    File "build\bdist.win32\egg\suds\client.py", line 542, in __call__
    File "build\bdist.win32\egg\suds\client.py", line 602, in invoke
    File "build\bdist.win32\egg\suds\client.py", line 643, in send
    File "build\bdist.win32\egg\suds\transport\https.py", line 64, in send
    File "build\bdist.win32\egg\suds\transport\http.py", line 79, in send
    File "C:\Python27\lib\socket.py", line 358, in read
    buf.write(data)
    MemoryError: out of memory
     
    , Jun 12, 2014
    #3
  4. dieter Guest

    There is not much "suds" can do with regard to this. In principle,
    it could write to a temporary file - but its purpose is to present
    the webservice result as a collection of Python objects - and
    they, too, require memory in the same order.

    Thus, you have the following options:

    * learn how to limit the amount of data, the webservice provides
    * give your system (its processes) more memory
    * do not use "suds" but process the incoming data incrementally
    (avoiding the build of the intermediate collection of Python objects).
     
    dieter, Jun 13, 2014
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.