/ / Long polling z GMail API - python, imap, long-polling, gmail-api

Długie polling z GMail API - python, imap, long-polling, gmail-api

Buduję instalację, która będzie działaćkilka dni i musi otrzymywać powiadomienia ze skrzynki odbiorczej GMail w czasie rzeczywistym. Interfejs API Gmaila doskonale nadaje się do wielu funkcji, których potrzebuję, dlatego chciałbym go używać, ale nie ma takiego polecenia IDLE jak IMAP.

W tej chwili utworzyłem implementację interfejsu API Gmailaktóry odpytuje pocztę co kilka sekund. Działa to świetnie, ale po chwili przestaje działać (otrzymuję "reset połączenia przez peera"). Czy rozsądnie jest wyłączyć sessona i restartować go co pół godziny lub dłużej, aby był aktywny (jak w przypadku IDLE)? Czy to okropny, okropny hack, który będzie miał Google'a rozwalającego moje drzwi w środku nocy?

Czy właściwym rozwiązaniem byłoby zalogowanie się za pomocą protokołu IMAPa także użyć IDLE, aby powiadomić mój moduł interfejsu API usługi GMail o uruchomieniu i wycofaniu zmian, gdy się pojawią? A może powinienem go po prostu wyssać i stworzyć implementację tylko IMAP?

Odpowiedzi:

3 dla odpowiedzi № 1

Zdecydowanie polecam przeciwko protokołowi IMAP, zauważże nawet przy komendzie IMAP IDLE nie jest to rzeczywisty czas - to tylko odpytywanie co kilka (5?) sekund pod osłonami, a następnie wypychanie do połączenia. (Eksperymentuj i zobacz opóźnienie.)

Zapytanie o historię.list () często jest dość tani i powinien być w porządku. Jeśli dotyczy to sporej liczby użytkowników, możesz chcieć trochę zoptymalizować, jak inteligentne wycofywanie nieaktywnych skrzynek pocztowych (np. Za każdym razem, gdy nie ma opóźnień w aktualizacjach o dodatkowe 5 sekund do maksymalnie maksimum, jak minuta lub dwie)?

Google zdecydowanie nie zbankrutuje ani nawet nie zauważy, chyba że robisz to co sekundę z użytkownikami 1M. :)

Prawdziwe powiadomienia push dla API są zdecydowanie czymś, do czego się domagamy.


0 dla odpowiedzi nr 2

Otrzymujesz reset połączenia przez peer, ponieważ przekraczasz limit Google. Każde żądanie interfejsu API GMail ma zdefiniowany limit tutaj.