Python 如何对应用程序进行并行调用?

Python 如何对应用程序进行并行调用?,python,Python,我正在尝试使用Flask和Python在GAE上构建一个web爬虫程序。我不是构建web应用程序的专家 因此,我创建了一个简单的主页,它有两个按钮,分别是“Single”和“List”,这两个按钮将带您进入页面,您可以在其中输入URL并分别上载URL的CSV文件 现在,单个URL部分非常简单,但是列表部分很棘手。比如说,我上传了一个包含“n”个URL的CSV文件,我希望每个URL调用“单个”部分(可能是n个调用),所有调用都需要像多处理/线程一样并行 我该怎么办?谷歌搜索把我带到了任务队列,我正

我正在尝试使用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应用程序上进行多处理(使用池工作者)吗?我在某个地方读到这是不可能的。