【发布时间】:2019-03-13 01:18:26
【问题描述】:
我有简单的 python 代码,可以在谷歌应用引擎中创建和处理推送队列。
要创建我使用的任务:
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))
创建另一个任务来尝试相同的事情,但这对我来说既慢又糟糕,考虑到这样我可以创建许多重复的无用任务。
【问题讨论】:
-
作为替代方案,您可以使用Pull Queues 在leasing 他们之后实现条件。
标签: python google-app-engine task-queue