Die Evernote-API (Python SDK) soll die Ratenbegrenzung in sandbox genauso implementieren wie die Produktion, aber das Ratenlimit dauert nur 15 Sekunden.Evernote-API Sandbox-Ratenbeschränkung Dauer größer als 15 Sekunden
Ich habe eine Testsuite, die die Rate-Limit von API-Aufrufe testen, bis eine Ausnahme auftritt.
Nach einer Wartezeit von 1 Minute tritt immer noch derselbe Fehler EDAMSystemException(errorCode=19, rateLimitDuration=2651, _message='DuplicateNoteLimiter')
auf.
Code:
from evernote.api.client import EvernoteClient
from evernote.edam.error.ttypes import EDAMSystemException
import evernote.edam.type.ttypes as Types
import time
def getClient():
return EvernoteClient(
token=config.dev_token,
sandbox=True
)
def makeNote(client):
note = Types.Note()
note.title = 'spam'
content = ''
note.content = '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'
note.content += '<en-note>'+ content + '</en-note>'
return client.get_note_store().createNote(note)
def test_api_limit():
client = getClient()
try:
while(True):
makeNote(client)
except EDAMSystemException as e:
assert e.errorCode == 19
print 'Caught Rate Limit Exception'
time.sleep(60)
makeNote(client) # still raise exception
print 'No exception occurred!' # this statement is not executed.
test_api_limit()