在Google App Engine开发服务器中结合--backends和事务任务队列时遇到问题?

4 投票
1 回答
616 浏览
提问于 2025-04-17 10:34

我在把一个比较大的 App Engine 应用的一些功能转移到后台时,突然发现我在使用事务的地方出现了很多错误,当时我是在通过 dev_appserver.py 运行应用。

ApplicationError: ApplicationError: 10001 Transaction(<handle: 0x1, app: "dev~MYAPPNAME", >) not found

我意识到这个问题只在我通过 --backends 运行应用时出现。我猜这个问题是因为我有一个事务,它使用 "transactional=True" 来添加一个任务到队列,也就是:

def txn():

    # make model changes

    taskqueue.add(url='/models/processupdate', params=my_params, transactional=True, queue_name='not_the_default_q')
  db.run_in_transaction(txn)

这是因为 dev_appserver 是“单线程”特性造成的吗?有没有什么解决办法?

1 个回答

0

根据谷歌文档这里的说明,如果你的任务是事务性的,那么你就不能给队列起名字。这样的事务任务只能放到默认的队列里!

撰写回答