python - python中非常慢的http post请求
问题描述
我创建了一个 python 脚本,它从 facebook graph api 收集 json 数据并检查用户 job_title 信息。
通过使用这个脚本,我通知用户通过聊天机器人更新他们的 job_title,但是这个过程需要太多时间来向所有用户发送请求。
import json
import requests
users_url = Facebook API to fetch user details
MESSAGE_TO_SEND = '....PLEASE UPDATE JOB TITLE....'
ACCESS_TOKEN = Page_Access_token
def reply(user_id, msg,ACCESS_TOKEN):
data = {
"recipient": { "id": user_id },
"message": { "text": msg }
}
resp = requests.post("https://graph.facebook.com/v9.0/me/messages?access_token="+ ACCESS_TOKEN, json=data)
print('Message Sent to : ',user_id)
# print(resp.content, resp, 'response from facebook')
def header(ACCESS_TOKEN):
return {'Authorization': 'Bearer ' + ACCESS_TOKEN}
def user_data(ACCESS_TOKEN):
headers = header(ACCESS_TOKEN)
data = requests.get(users_url,headers=headers)
result_json = json.loads(data.text)
resources = result_json['Resources']
for titles in range(0,len(resources)):
if 'title' not in resources[titles]:
user_id = str(resources[titles]['id'])
reply(user_id, MESSAGE_TO_SEND,ACCESS_TOKEN)
user_data(ACCESS_TOKEN)
请帮帮我....我该怎么办?
解决方案
在此处调整示例...
from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import as_completed
import time
def square(n):
time.sleep(3.0)
print( n * n )
def main():
values = range(10)
with ThreadPoolExecutor(max_workers = 5) as executor:
results = executor.map(square, values)
# for result in results:
# print(result)
if __name__ == '__main__':
st = time.time()
main()
et = time.time()
print('{:.3f} seconds'.format(et-st))
替换values
为您的 user_ids 列表和square
您的reply
函数,并设置max_workers
为您喜欢的数量。
推荐阅读
- macos - SwiftUI connect CoreDate to settings window (macOS)
- flutter - 为什么飞镖只想关闭我的一个集团?
- c# - 如何给用户一组特定的变量可供选择?
- javascript - 在 document.getElementById.src 中使用数组不起作用
- css - 无法使用 Text-Align 在 CSS 块中居中文本
- docking - Nevron DockPanel - 调整手柄的大小
- python - AttributeError:“str”对象没有属性“get”。Tkinter 和 Sqlite 出错
- mongodb - 如何对集合的连续部分进行分组?
- c - 如何使用qsort在顶点高度之后对抛物线结构进行排序?
- javascript - 如何在一页中添加多个条纹按钮?