Skip to main content
 首页 » 编程设计

python之谷歌应用引擎任务队列

2025年05月04日13telwanggs

在谷歌应用引擎中使用任务队列时遇到一些问题。我尝试做与本网站相同的事情: https://developers.google.com/appengine/docs/python/taskqueue/overview-push

但似乎我的任务从未执行过,我得到了这个错误:

警告 2012-11-25 15:29:21,258 taskqueue_stub.py:1978] 任务 task1 无法执行。此任务将在 12.800 秒后重试

除以下代码外,代码基本相同:

class CounterWorker(webapp.RequestHandler): 
  def init(self): # should run at most 1/s 
    def txn(): 
      logging.info("bla") 
    db.run_in_transaction(txn) 

我只是像这样添加任务:

taskqueue.add(url='/worker') 

我真正想要的只是运行一段不会超时的代码。所以我读到我可以使用任务队列。但我似乎无法让它发挥作用。

请您参考如下方法:

默认情况下,任务队列会向映射到 URL 的任何处理程序发送 POST 请求(在您的例子中是/worker,它应该映射到 CounterWorker)。因此,您需要在 CounterWorker 方法中定义一个 post 方法。

class CounterWorker(webapp.RequestHandler): 
  def post(self): 
    def txn(): 
      logging.info("bla") 
    db.run_in_transaction(txn) 

您的评论表明任务应该只运行 1/s。您可以在 queue.yaml config file 中定义它.

此外,任务队列有 10 分钟的超时时间,因此它们不会永远运行。要纠正此问题,请尝试将它们链接起来或使用 deferred API .对于长时间运行的进程,backends API可能更合适。