Python 如何对应用程序进行并行调用?
我正在尝试使用Flask和Python在GAE上构建一个web爬虫程序。我不是构建web应用程序的专家 因此,我创建了一个简单的主页,它有两个按钮,分别是“Single”和“List”,这两个按钮将带您进入页面,您可以在其中输入URL并分别上载URL的CSV文件 现在,单个URL部分非常简单,但是列表部分很棘手。比如说,我上传了一个包含“n”个URL的CSV文件,我希望每个URL调用“单个”部分(可能是n个调用),所有调用都需要像多处理/线程一样并行 我该怎么办?谷歌搜索把我带到了任务队列,我正在读这方面的文章。但我想知道哪种方法是最好的,任何例子都将不胜感激Python 如何对应用程序进行并行调用?,python,Python,我正在尝试使用Flask和Python在GAE上构建一个web爬虫程序。我不是构建web应用程序的专家 因此,我创建了一个简单的主页,它有两个按钮,分别是“Single”和“List”,这两个按钮将带您进入页面,您可以在其中输入URL并分别上载URL的CSV文件 现在,单个URL部分非常简单,但是列表部分很棘手。比如说,我上传了一个包含“n”个URL的CSV文件,我希望每个URL调用“单个”部分(可能是n个调用),所有调用都需要像多处理/线程一样并行 我该怎么办?谷歌搜索把我带到了任务队列,我正
提前感谢。您可以使用
池。在房间里
它需要一个iterable并对每个元素并行应用一个函数
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))
我相信您需要做的是实现,这样您可以同时发送所有n
URL请求,并且在等待请求完成时不会阻止脚本执行
您之所以发现这是实现这一点的一种方法,是因为它们是按设计异步运行的
但是,如果您需要在脚本的同一运行时获取其中一个HTTP请求的响应,则最好使用。本文档还包括一些代码示例:
默认情况下,HTTP请求是同步的。发出异步
申请时,您的申请必须:
使用urlfetch.Create\u RPC()
创建新的RPC对象。这个物体
表示后续方法调用中的异步调用李>
调用urlfetch.make\u fetch\u Call()
发出请求。这种方法会占用您的时间
RPC对象和请求目标的URL作为参数李>
调用RPC对象的get\u result()
方法。如果出现以下情况,此方法将返回结果对象
请求成功,并在出现错误时引发异常
在请求期间发生
您可以使用这两个选项中的任何一个来实现这一点,第一个选项将允许您在单独的API中创建和管理请求,该API将从您的应用程序中调用;而另一个则在appengine(标准)中运行,可能更容易实现。你读过Scrapy吗?您可以将它与应用程序集成,并为您处理所有请求。是的,但我不能更改我的爬虫程序,我需要使用自己的爬虫功能。我只需要知道Google app Engine上同一应用程序的另一个服务对其中一个服务的并行调用。但是我们可以在GAE上托管的Flask应用程序上进行多处理(使用池工作者)吗?我在某个地方读到这是不可能的。