如果什么是更快的方法,我怎样才能加快获取请求的速度?
How can I speed up get request, if what is a faster method?
我的应用程序中有一些代码让我的速度减慢太多,这很简单
'get' 功能...
这部分代码只是在互联网上找到 PDF 的位置,然后将其提取。我以为是提取过程花费了这么长时间,但经过一些测试,我相信这是 'get' 请求。我将一个变量传递给 URL,因为有许多不同的 PDF 可供用户间接使用 select。我曾尝试使用 kivy 的 Urlrequest,但老实说,我无法从中得到结果。我听说它虽然更快。我有另外 2 'post' 个不同功能的会话,它们的工作速度比这个快 10 倍,所以不确定是什么问题...
我的程序的其余部分工作正常,只是这个有时会增加 20-25 秒以上的加载时间(这是不合理的)。
我将在下面提供问题的有效摘录供您尝试。
我发现它第一次尝试“airport_loc”是最慢的,请尝试用以下一些示例替换 airport_loc 变量:
“YPAD”
“YMLT”
“YPPH”
在这里我可以做些什么来加快速度或提高效率?
import requests
from html2text import html2text
import re
s = requests.session()
page = s.get('https://www.airservicesaustralia.com/aip/pending/dap/AeroProcChartsTOC.htm')
text = html2text(page.text)
airport_loc = "YSSY"
finding_airport = (re.search(r'.%s.' % re.escape(airport_loc), text)).group()
ap_id_loc = int(text.index(finding_airport)) + 6
ap_id_onward = text[ap_id_loc:]
next_loc = re.search(r'[(]Y\w\w\w[)]', ap_id_onward)
next_loc_stop = text.index(next_loc.group())
ap_id_to_nxt_ap = text[ap_id_loc:next_loc_stop]
needed_text = (html2text(ap_id_to_nxt_ap))
airport_id_less_Y = airport_loc[1:]
app_1 = re.search(r'%sGN.*' % re.escape(airport_id_less_Y), needed_text)
app_2 = re.search(r'%sII.*' % re.escape(airport_id_less_Y), needed_text)
try:
if app_2.group():
line_of_chart = (app_2.group())
except:
if app_1.group():
line_of_chart = (app_1.group())
chart_title = (re.search(r'\w\w\w\w\w\d\d[-]\d*[_][\d\w]*[.]pdf', line_of_chart)).group()
# getting exact pdf now
chart_PDF = ('https://www.airservicesaustralia.com/aip/pending/dap/' + chart_title)
retrieve = s.get(chart_PDF)
content = retrieve.content
print(content)
# from here on is working fine.
我没有包含后面的代码,因为我认为它不是很相关。
请帮我加快速度:(
我只用你的代码还需要 3 秒。
延迟可能来自服务器。
为了使请求更快一些,我尝试像这样编辑 HTTP 适配器。
s.mount('http://', requests.adapters.HTTPAdapter(max_retries=0))
retrieve = s.get(chart_PDF)
改善不大(3 秒 -> 2 秒)
但有失败的风险。
使用“asyncio”或其他异步 http 库是更好的方法
我的应用程序中有一些代码让我的速度减慢太多,这很简单 'get' 功能... 这部分代码只是在互联网上找到 PDF 的位置,然后将其提取。我以为是提取过程花费了这么长时间,但经过一些测试,我相信这是 'get' 请求。我将一个变量传递给 URL,因为有许多不同的 PDF 可供用户间接使用 select。我曾尝试使用 kivy 的 Urlrequest,但老实说,我无法从中得到结果。我听说它虽然更快。我有另外 2 'post' 个不同功能的会话,它们的工作速度比这个快 10 倍,所以不确定是什么问题...
我的程序的其余部分工作正常,只是这个有时会增加 20-25 秒以上的加载时间(这是不合理的)。
我将在下面提供问题的有效摘录供您尝试。 我发现它第一次尝试“airport_loc”是最慢的,请尝试用以下一些示例替换 airport_loc 变量: “YPAD” “YMLT” “YPPH”
在这里我可以做些什么来加快速度或提高效率?
import requests
from html2text import html2text
import re
s = requests.session()
page = s.get('https://www.airservicesaustralia.com/aip/pending/dap/AeroProcChartsTOC.htm')
text = html2text(page.text)
airport_loc = "YSSY"
finding_airport = (re.search(r'.%s.' % re.escape(airport_loc), text)).group()
ap_id_loc = int(text.index(finding_airport)) + 6
ap_id_onward = text[ap_id_loc:]
next_loc = re.search(r'[(]Y\w\w\w[)]', ap_id_onward)
next_loc_stop = text.index(next_loc.group())
ap_id_to_nxt_ap = text[ap_id_loc:next_loc_stop]
needed_text = (html2text(ap_id_to_nxt_ap))
airport_id_less_Y = airport_loc[1:]
app_1 = re.search(r'%sGN.*' % re.escape(airport_id_less_Y), needed_text)
app_2 = re.search(r'%sII.*' % re.escape(airport_id_less_Y), needed_text)
try:
if app_2.group():
line_of_chart = (app_2.group())
except:
if app_1.group():
line_of_chart = (app_1.group())
chart_title = (re.search(r'\w\w\w\w\w\d\d[-]\d*[_][\d\w]*[.]pdf', line_of_chart)).group()
# getting exact pdf now
chart_PDF = ('https://www.airservicesaustralia.com/aip/pending/dap/' + chart_title)
retrieve = s.get(chart_PDF)
content = retrieve.content
print(content)
# from here on is working fine.
我没有包含后面的代码,因为我认为它不是很相关。
请帮我加快速度:(
我只用你的代码还需要 3 秒。 延迟可能来自服务器。
为了使请求更快一些,我尝试像这样编辑 HTTP 适配器。
s.mount('http://', requests.adapters.HTTPAdapter(max_retries=0))
retrieve = s.get(chart_PDF)
改善不大(3 秒 -> 2 秒)
但有失败的风险。
使用“asyncio”或其他异步 http 库是更好的方法