У меня есть простой код Python, который создает и обрабатывает push-очереди в движке приложений Google.
Для создания задач я использую:
taskqueue.Queue(MY_QUEUE_NAME).add(taskqueue.Task(url=MY_URL,params=MY_PARAMS))
Для обработки задач я использую:
class QueueHandler(webapp2.RequestHandler):
def post(self):
params = self.request.get('params')
MY_FUNCION(params)
Это прекрасно работает, но мне нужно запускать свою функцию, только если выполняется условие!Я хотел бы сделать что-то вроде этого:
class QueueHandler(webapp2.RequestHandler):
def post(self):
params = self.request.get('params')
if IS_RAINING:
MY_FUNCION(params)
ELSE:
RETRY_ANOTHER_TIME
Прямо сейчас вместо RETRY_ANOTHER_TIME я использовал это:
raise ValueError("not_raining")
, но я знаю, что это очень плохой способ сделать это.
Я также предполагал, что вместо RETRY_ANOTHER_TIME я мог бы использовать:
taskqueue.Queue(MY_QUEUE_NAME).add(taskqueue.Task(url=MY_URL,params=MY_PARAMS))
создание другой задачи, которая будет пытаться сделать то же самое, но это медленно и ужасно для меня, учитывая, что я мог бы создать многодублирует бесполезные задания.