python - 带有回调请求的简单异步python 3
问题描述
我是 python 新手我正在尝试开发发送大约 10,000 个请求来测试我的 API 的应用程序,我使用 pyqt5 和 python 3,我想使用 requests 发出许多 A-sync 请求,发送许多请求而不是等待响应,但在响应准备好时添加回调,例如更新 UI,请给我一个工作示例,谢谢帮助
解决方案
嗨furas试试你的代码,它没有添加代理到 session.post 这是代码
import aiohttp
import asyncio
import sys
import time
from decimal import localcontext, Decimal, ROUND_HALF_UP
from datetime import datetime,timezone ,timedelta
BASE_URI = 'https://d.com/session.php'
def show_exception_and_exit(exc_type, exc_value, tb):
traceback.print_exception(exc_type, exc_value, tb)
sys.exit(-1)
async def fetch(session, url):
proxies = {
"http" :"http://W09s1H:eMwmFL@91.188.240.67:9951",
"https" :"https://W09s1H:eMwmFL@91.188.240.67:9951"
}
Timestamp = int((datetime.utcnow() - datetime(1970,1,1)).total_seconds())
headers = {
"user-agent": "Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/20100101 Firefox/64.0"
}
JsonSession = "{'device':'id'}"
async with session.post(url,
data=JsonSession,
headers=headers,
params={"timestamp":Timestamp}) as response:
return await response.text()
async def main(url):
tasks = []
results = []
async with aiohttp.ClientSession() as session:
for n in range(1,10):
tasks.append(fetch(session, url))
results = await asyncio.gather(*tasks)
return results
def parallel(url):
loop = asyncio.get_event_loop()
results = loop.run_until_complete(main(url))
return results
# --- main ---
result = parallel(BASE_URI)
for item in result:
print(item[:300])
print('-----')
当我添加这样的代理时:
async with session.post(url,
data=JsonSession,
headers=headers,
params={"timestamp":Timestamp},
proxies=proxies) as response:
我得到错误
Traceback (most recent call last):
File "C:/Users/soft/AppData/Local/Programs/Python/Python37-32/MyApp/Scripts/Test.py", line 51, in <module>
result = parallel(BASE_URI)
File "C:/Users/soft/AppData/Local/Programs/Python/Python37-32/MyApp/Scripts/Test.py", line 44, in parallel
results = loop.run_until_complete(main(url))
File "C:\Users\soft\AppData\Local\Programs\Python\Python37-32\lib\asyncio\base_events.py", line 579, in run_until_complete
return future.result()
File "C:/Users/soft/AppData/Local/Programs/Python/Python37-32/MyApp/Scripts/Test.py", line 39, in main
results = await asyncio.gather(*tasks)
File "C:/Users/soft/AppData/Local/Programs/Python/Python37-32/MyApp/Scripts/Test.py", line 30, in fetch
proxies=proxies) as response:
File "C:\Users\soft\AppData\Local\Programs\Python\Python37-32\lib\site-packages\aiohttp\client.py", line 876, in post
**kwargs))
TypeError: _request() got an unexpected keyword argument 'proxies'
如何将代理添加到 session.post 因为我真的需要添加它
推荐阅读
- wpf - 从后面的代码设置 TreeViewItem 的前景色
- java - Selenium - 我怎样才能刮掉这张桌子?
- python - ValueError:无法查询“用户名”:必须是“用户”实例
- amazon-web-services - 检查 Route 53 Alias 记录映射到 ELB 的 URL 的命中次数
- c# - linq 减去列表中的数字
- django - 如何使用基于类的自定义验证器在 Django 中即时验证 CSV 文件上传?
- mysql - 查询数据以及mysql中有多少行有该日期
- javascript - react js功能组件中的条件渲染
- regex - 正则表达式查找正则表达式的多个外观
- javascript - 当涉及 JS 库时,如何查找哪个 Javascript 函数正在操作特定的 DOM 元素