2017-02-01 3 views
0

Das folgende Python-Skript wie ein Zauber im letzten Monat gearbeitet:Softlayer getAllBillingItems funktioniert nicht mehr?

Script:

import SoftLayer 
client = SoftLayer.Client(username='someUser', api_key='someKey') 
LastInvoice = client['Account'].getAllBillingItems() 
print LastInvoice 

Das heutige Ergebnis:

C:\Python27\python.exe C:/Users/username/Documents/Python/Softlayer/Softlayer5.py 
Traceback (most recent call last): 
    File "C:/Users/username/Documents/Python/Softlayer/Softlayer5.py", line 8, in <module> 
    LastInvoice = client['Account'].getAllBillingItems() 
    File "C:\Python27\lib\site-packages\SoftLayer\API.py", line 392, in call_handler 
    return self(name, *args, **kwargs) 
    File "C:\Python27\lib\site-packages\SoftLayer\API.py", line 360, in call 
    return self.client.call(self.name, name, *args, **kwargs) 
    File "C:\Python27\lib\site-packages\SoftLayer\API.py", line 263, in call 
    return self.transport(request) 
    File "C:\Python27\lib\site-packages\SoftLayer\transports.py", line 197, in __call__ 
    raise exceptions.TransportError(ex.response.status_code, str(ex)) 
SoftLayer.exceptions.TransportError: TransportError(500): 500 Server Error: Internal Server Error for url: https://api.softlayer.com/xmlrpc/v3.1/SoftLayer_Account 

Andere api Aktionen funktionieren ... irgendwelche Gedanken?

Antwort

0

gut der Charme hat einen Defekt und es ist, wenn die Antwort eine große Menge an Daten hat, die Timeouts in der Antwort verursacht und die Verbindung geschlossen ist.

aber dieses Problem kann leicht mit Hilfe Ergebnis Grenzen werfen Sie einen Blick auf dieses Beispiel gelöst werden:

import SoftLayer 

# Your SoftLayer API username and key. 
USERNAME = 'set me' 
API_KEY = 'set me' 

client = SoftLayer.Client(username=USERNAME, api_key=API_KEY) 

offset = 0 
limit = 50 

accountService = client['SoftLayer_Account'] 

while True: 
    try: 
     result = accountService.getAllBillingItems(limit=limit, offset=offset) 
     offset = offset + limit 
     limit = limit + limit 
     print(result) 
     if not result: 
      break 
    except SoftLayer.SoftLayerAPIError as e: 
     print("Unable to retrieve the servers . " % (e.faultCode, e.faultString)) 
     exit(1) 

Grüße

+0

für Ihre Antwort Danke. Ich werde es versuchen. – yuval

+0

groß können Sie weitere Informationen zu diesem Fehler hier http://sldn.softlayer.com/blog/phil/how-solve-error-fetching-http-headers die Lösung in allen Fällen ist es, die Menge der Daten in der asnwer.Wenn diese Hilfe Sie bitte nicht vergessen, markieren Sie die Antwort als die richtige und klicken Sie wie :) –