2024-05-15 09:06:08 发布
网友
我必须使suds异步运行, 我想了两个主意:
(更容易)在单独的线程中运行每个suds调用,因为GAE python2.7运行时allowsit。
(更难)重写suds lib以在异步url fetch之上运行
我想用第一个选项,但不知道是否会比第二个慢很多。在
也许在GAE方面更有经验的人可以帮我选择?在
更新
结果必须在单个web请求中,所以我不能使用任务队列/mapreduce/backends
根据this question,suds不是一个线程安全库。因此,您必须为每个希望利用suds客户机对象的线程创建一个新的客户机。话虽如此,1号选择将是你最好的选择。在
另外,请查看here,了解如何使suds库在GAE上使用缓存。在
要尝试的其他技术(对于不需要在单个web请求中获得结果的用例):
Backends和Pull Queues:(如果您计划经常打电话,请使用此方法)
创建将suds客户机存储在内存中并不断轮询请求队列以查找需要执行的任务的始终在线后端。通过这种方式,您可以推送应用程序需要执行的许多任务/调用,并让多个后端以小块的形式消耗数据。在
Task Queues:
(如果您希望将成本保持在最低限度,并且不打算一直进行多次SOAP调用,请使用此方法)
创建任务,让AppEngine跨多个实例执行您的需求。要知道,任务何时执行并不能保证,但根据我的经验,这并不是一个问题。在
根据this question,suds不是一个线程安全库。因此,您必须为每个希望利用suds客户机对象的线程创建一个新的客户机。话虽如此,1号选择将是你最好的选择。在
另外,请查看here,了解如何使suds库在GAE上使用缓存。在
更新
要尝试的其他技术(对于不需要在单个web请求中获得结果的用例):
Backends和Pull Queues:(如果您计划经常打电话,请使用此方法)
创建将suds客户机存储在内存中并不断轮询请求队列以查找需要执行的任务的始终在线后端。通过这种方式,您可以推送应用程序需要执行的许多任务/调用,并让多个后端以小块的形式消耗数据。在
Task Queues:
(如果您希望将成本保持在最低限度,并且不打算一直进行多次SOAP调用,请使用此方法)
创建任务,让AppEngine跨多个实例执行您的需求。要知道,任务何时执行并不能保证,但根据我的经验,这并不是一个问题。在
相关问题 更多 >
编程相关推荐