我必须异步运行suds, 我在考虑两个想法:
(更简单)在单独的线程中运行每个suds调用因为GAE python 2.7运行时allows它。
(更难)重写suds lib以在异步url fetch上运行
我想使用第一个选项,但不知道它是否比第二个选项慢得多。
也许在GAE中有经验的人可以帮我选择?
更新
结果必须是单个Web请求,因此我无法使用任务队列/ mapreduce /后端
答案 0 :(得分:1)
根据this question,suds不是线程安全的库。因此,您必须为每个想要使用suds客户端对象的线程创建一个新客户端。话虽如此,选择数字1将是您的最佳选择。
另外,请查看here以获取有关如何使suds库在GAE上使用缓存的信息。
<强>更新强>
尝试的其他技术(对于在单个Web请求中不需要结果的用例):
Backends和Pull Queues :(如果您打算不断拨打电话,请使用此方法)
创建将suds客户端存储在内存中的always-on后端,并不断轮询pull队列以查找需要执行的任务。这样,您可以推送应用程序需要执行的许多任务/调用,并使多个后端以小块的形式使用数据。
<强> Task Queues 强>:
(如果您想尝试将成本降至最低并且不打算一直进行多次SOAP调用,请使用此方法)
创建任务,让AppEngine跨多个实例执行您的需求。只知道无法保证任务何时执行,但根据我的经验,这不是问题。