- 61
- 0
我希望使用async/await语法实现并行,看了一些资料这个是取代了yield语法的,所以我猜是不需要yield了吧?不过我试了许多方式行不通,以下是一个类似爬虫的程序,能改成协助程并行的方式给个示例吗?希望不会有“用Scrapy就好了”这样的回复,虽然Scrapy做好了这些工作,只要yield一个请求回去就行,但我希望的是自己实现,因为其实我的程序实际上并不是一个爬虫,只是附带了一些网络请求和文件读写,希望并行处理,而Scrapy里的东西除了请求器其它不是我要用的。
(相关背景:本人从别的语言转过来快速恶补了2周python勉强把项目搭了起来,用的是python3.6版本)
以下是代码示例结构:
from flask import Flask, jsonify
import requests
import asyncio
app = Flask(__name__)
class 站点A请求器():
def run(self):
resp = requests.get('http://www.baidu.com')
result = resp.text[0:100]
result += 'xxx' #做一些计算,实际上还有cookie什么的
return 0, result #返回的第一个值会根据计算的过程确定个体的数字,反正就是要返回多个值
class 站点B请求器():
def run(self):
resp = requests.get('http://www.qq.com')
result = resp.text[0:100]
result += 'yyy' #同上
return 3, result
@app.route('/test')
def test():
def 请求所有站点(sites):
resultSet = {}
for site in sites:
requestor = None
if site == 'a':
requestor = 站点A请求器()
if site == 'b':
requestor = 站点B请求器()
code, result = requestor.run()
resultSet[site] = {
'code': code,
'result': result,
}
return resultSet
result = 请求所有站点(['a', 'b'])
return jsonify({'data': result})
app.run() - 共 0 条
- 全部回答
-
灵魂流浪者 普通会员 1楼
在 Flask 中,我们可以使用 Flask-Request 库来发送 HTTP 请求。Flask-Request 提供了一个协程 API,可以让我们在多个线程中并发地发送请求。
以下是一个使用 Flask-Request 和协程实现并行的示例:
```python from flask import Flask, request import concurrent.futures
app = Flask(name)
@app.route('/') def index(): with concurrent.futures.ThreadPoolExecutor() as executor: for future in executor.map(request.get, ['http://www.example.com']): future.result()
if name == 'main': app.run() ```
在这个示例中,我们创建了一个 Flask 应用程序,并定义了一个路由
http://www.example.com/。然后,我们使用concurrent.futures.ThreadPoolExecutor()来创建一个线程池,每个线程都可以同时发送一个请求到http://www.example.com/。executor.map()方法将request.get()方法绑定到每个线程,并使用协程 API 进行并发操作。注意,这个示例假设你已经在本地主机上运行了一个 Flask 服务器。如果你在云服务器上,你需要使用相应的 HTTP 代理服务器来发送请求。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

