Jak wykonać zadania w kolejności (FIFO) przy użyciu Google App Engine zadań kolejek?

głosy
2

Wierzę kolejki zadań (pchania, ciągnięcia, odroczona) w Google App Engine nie gwarantuje, że zadania będą realizowane w kolejności FIFO. Na przykład, przypuśćmy, że posiada kolejkę zadań z zadaniami A, B i C, a każde zadanie ma znacznik czasu t_A, t_B i t_C, tak że t_A <t_B <t_C. Skąd mogę mieć pewność, że zadania A, B i C są wykonywane w kolejności timestamp? Jeśli zadanie B nie chciałbym, aby opóźnić realizację zadań C do B wykonuje zadanie pomyślnie. Widziałem pole ETA, aby ustawić najwcześniej, że zadanie może być wysłana, ale to wydaje się bardziej heurystyki, a nie gwarancji.

Utwórz 30/04/2015 o 17:18
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
2

Rozważyć użycie API rurociągowego:

https://github.com/GoogleCloudPlatform/appengine-pipelines

Oni już wykonać pracę dla Ciebie:

https://github.com/GoogleCloudPlatform/appengine-pipelines/wiki/Python#user-content-execution-ordering

class LogWaitLogInOrder(pipeline.Pipeline):

  def run(self, message1, message2, delay):
    with pipeline.InOrder():
      yield LogMessage(message1)
      yield Delay(seconds=delay)
      yield LogMessage(message2)

    yield LogMessage('This would happen immediately on run')

Api rurociągi daje ci również raportowanie / Sugestie / powiadomienia / etc.

Ale jeśli to przesada dla konkretnych potrzeb, a następnie po prostu zrobić jak sugeruje @Paul, wystarczy utworzyć kolejne zadanie, gdy pierwszy uzupełnia i nadzieję na najlepsze


odniesienie wideo:

Google I / O 2010 - rurociągi danych z Google App Engine:

https://www.youtube.com/watch?v=zSDC_TU7rtc

Odpowiedział 01/05/2015 o 18:22
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more