Hai eseguito questa azione troppo volte

Ricevo questo errore diverse volte.

{\"errors\":[\"Hai eseguito questa azione troppe volte. Attendi qualche secondo prima di riprovare.\"],\"error_type\":\"rate_limit\",\"extras\":{\"wait_seconds\":0}}

Come posso eliminare questo errore? Suggerimenti, per favore.

Vai su Impostazioni > Limitazione della frequenza. Modifica i valori come preferisci

Ciao @IAmGav,

Ho impostato quanto segue:

  1. Limite di creazione argomenti = 0 (Dopo aver creato un argomento, gli utenti devono attendere (n) secondi prima di crearne un altro.)
  2. Limite di creazione post = 0 (Dopo aver pubblicato, gli utenti devono attendere (n) secondi prima di creare un altro post.)
  3. Limite di creazione argomenti per nuovi utenti = 0 (Dopo aver creato un argomento, i nuovi utenti devono attendere (n) secondi prima di crearne un altro.)
  4. Limite di creazione post per nuovi utenti = 0 (Dopo aver pubblicato, i nuovi utenti devono attendere (n) secondi prima di creare un altro post.)

Tuttavia, l’errore persiste. Ci sono altri limiti che dovrei controllare?

Ho disattivato tutte le impostazioni menzionate in:

Tuttavia, ricevo ancora l’errore “Hai eseguito questa azione troppe volte”.
C’è qualcos’altro che devo fare?

Allora, cosa stai esattamente facendo che causa questo errore?

Sto cercando di creare argomenti tramite API. Mentre provo a crearne circa 100 tramite API, ricevo questo errore.
Sto anche cercando di aggiornare i tag dei miei argomenti tramite API; ci sono centinaia di argomenti nel mio forum che non hanno tag. Quindi sto aggiornando i tag per loro tramite API.

Quindi quali sono i valori di

DISCOURSE_MAX_USER_API_REQS_PER_MINUTE
DISCOURSE_MAX_USER_API_REQS_PER_DAY
DISCOURSE_MAX_ADMIN_API_REQS_PER_KEY_PER_MINUTE

e sei sicuro di rimanere al di sotto di questi limiti?

Ciao :wave:
Sto riscontrando lo stesso problema ma con le azioni di lettura

Sto creando un’integrazione con Discourse e utilizzo l’API per leggere molti post. Non eseguo operazioni di scrittura, solo di lettura. Per ottenere gli ultimi post faccio quanto segue:

  1. Ottengo gli ultimi argomenti tramite l’endpoint /latest.json
  2. Ottengo sequenzialmente tutti gli argomenti tramite /t/:id in modo da poter ottenere lo stream dei post e paginarli
  3. Se ci sono più di 20 post in quell’argomento, ottengo i loro ID da “stream” e li recupero sequenzialmente in blocchi di dimensioni 20

Inoltre, eseguo tutte le richieste in coda e cerco di inviare non più di ~25 richieste ogni 10 secondi, ma vedo comunque spesso l’errore “Hai eseguito questa azione troppe volte” per le richieste di lettura di argomenti o post. Sono andato nelle impostazioni di Discourse ma non riesco a trovare limiti per la Lettura. Vedo solo limiti per “Crea argomenti” e altre operazioni di scrittura

C’è qualcosa che posso fare al riguardo? Grazie per qualsiasi suggerimento e scusa per aver ripreso un vecchio argomento

Sembra che stia raggiungendo il limite max_admin_api_reqs_per_minute. È possibile personalizzarlo? Non lo vedo in Impostazioni > Limiti di frequenza.

MODIFICA: in realtà sembra che ci siano due limiti. admin_api_key_rate_limit e ip_10_secs_limit.

Sono curioso se l’aggiunta di ?print=true aiuterà a ridurre il numero di chiamate API durante la lettura?

Questo ti permetterà di recuperare 1000 post in una singola chiamata API.

Oh, per qualche motivo pensavo che ?print avesse limiti di frequenza ancora più restrittivi

Ma sembra che non si tratti dell’uso di ?print=true ma di qualcos’altro. Lo proverò sicuramente.

Ma per quanto ho capito aiuterà solo con argomenti che hanno più di 20 post. Credo che la maggior parte dei nostri argomenti ne abbia meno, quindi l’ostacolo effettivo sono troppe richieste per gli argomenti.

Sì, quello serve a limitare gli utenti. Se hai una chiave API Admin, quell’impostazione non ti riguarda.

Ah sì, molto probabile allora.

Oltre a controllare gli errori 429 e rallentare per la quantità specificata, ci sono un paio di opzioni.

Inizierei usando il plugin data explorer per scrivere una query che recuperi tutti gli argomenti che ti interessano. Credo che restituirà fino a 1000 risultati. Puoi quindi utilizzare l’API per chiamare la query e ottenere la risposta.

A seconda del tuo caso d’uso, anche i webhook potrebbero essere utili. Potresti configurarli per ogni nuovo argomento e post e semplicemente ascoltare tutti i contenuti più recenti.

Se ancora determini di dover aumentare i limiti di frequenza dell’API, possiamo farlo, ma solo per i siti sul nostro piano enterprise poiché non si trovano sul nostro hosting condiviso pro/business.

Il problema con l’uso del plugin data explorer è che non siamo gli unici utenti dell’integrazione Discourse. Noi (fibery.io) consentiamo ai nostri clienti di integrare le loro istanze di Discourse in modo da poter sincronizzare perfettamente i dati nel nostro strumento.

Le webhook sono una bella aggiunta ma non aiuteranno durante la prima sincronizzazione (che è la più pesante, ad es. argomenti e post del mese scorso). Dopodiché eseguiamo sincronizzazioni pianificate per nuovi dati e non sono un problema.

Il controllo di 429 e il nuovo tentativo funzionano bene, solo che a volte possono essere lenti)

Grazie per averci dato un’occhiata :bow: