Wiele zapytań na raz do api

Odpowiedz Nowy wątek
2019-11-08 16:56
0

Witam mam pewien problem. Konkretnie tworzę stronę korzystającą z API, która wyświetla informacje (statystyki danego użytkownika w grze). Gracz wpisuje swój nick i skrypt pobiera z API odpowiednie informacje i je analizuje. Twórcy API umożliwiają wykonanie kilku zapytań na sekundę dla 1 aplikacji (można mieć maksymalnie 10 aplikacji). Problem pojawia się jeżeli kilku użytkowników w ciągu 1 sek będzie chciało sprawdzić statystyki i zostanie przekroczony limit zapytań. Zrobiłem z kilkoma osobami test i przy 8/10 osobach, które wykonały zapytanie w tym samym momencie dla 2 wyrzuciło błędy. Chciałbym uniknąć takiej sytuacji. Jak zrobić jakąś kolejkę - że jak jest kilka zapytań na raz to ktoś ma poczekać, albo żeby skrypt przekierował zapytanie na inną aplikację (jak pisałem wcześniej limit tych kilku zapytań na sekundę dotyczy 1 aplikacji)? Aby skrypt skorzystał z innej aplikacji wystarczy w 1 miejscu zmienić ID, więc to nie problem, ale skąd skrypt ma wiedzieć kiedy to zrobić? A może jakieś inne pomysły?

edytowany 2x, ostatnio: mordkaje, 2019-11-08 16:58

Pozostało 580 znaków

2019-11-08 17:10

Robisz tabelę w bazie danych która przechowuje kolejkę i jednocześnie mierzysz ile wykonujesz zapytań na sekundę. Przy czym obchodzenie tego przez tworzenie wielu aplikacji, prawdopodobnie skończy się jakimś banem, jeżeli nie będziesz miał farmy serwerów, i to oddalonych od siebie jeżeli chodzi o klasy IP. Robienie tego z jednego serwera jest proste do wykrycia przez twórców API. Zamiast kombinować wykup jakiś większy pakiet czy z nimi porozmawiaj, taniej wyjdzie.


edytowany 1x, ostatnio: TomRZ, 2019-11-08 17:10
to nie jest kwestia pieniędzy. To jest api gry i po prostu 1 konto w grze ma maksymalnie 10 aplikacji. - mordkaje 2019-11-08 17:13

Pozostało 580 znaków

2019-11-08 17:16
1

Tak na szybko to możesz po prostu zrobic zwykłą obsługę błedów;

  • jesli pojawia się błąd (jest on jakos komunikowany po stronie API, prawda?) wychwytujesz go i
  • wykorzystujesz funkcję sleep (z losowo ustalanym czasem), później leci kolejne zapytanie
  • powiedzmy 3 nieudane próby (błędy) powodują uruchomienie zmiany aplikacji i ponowne zapytanie

No i wypadałoby okreslić jakis limit czasowy dla całości.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0