我一直在尝试编写一个应用程序,它将通过python REQUEST模块发送几个twitter api post请求,其中时间极其重要。但是,当我开始发送更多这些请求时,处理过程需要花费更长的时间。
我已经梳理了其他几个相关的帖子,但一直找不到适合这个问题的帖子。我已经看到了几个使用异步或线程的建议,但是由于oauth的要求而在实现它时却相当不成功。
我的代码剪切如下:
import urllib2
import json
from requests_oauthlib import OAuth1
import httplib2
import requests
from datetime import datetime
print "found?"
found = raw_input()
url = 'https://api.twitter.com/1.1/direct_messages/new.json'
def get_oauth():
oauth = OAuth1("xxxxxxxxx",
client_secret="xxxxxxxxxxxx",
resource_owner_key="xxxxxxxxxx",
resource_owner_secret="xxxxxxxxxxxxxxx")
return oauth
def get_oauthfranco():
oauthfranco = OAuth1("xxxxxxxxxxxxxx",
client_secret="xxxxxxxxxxxx",
resource_owner_key="xxxxxxxxxxxx",
resource_owner_secret="xxxxxxxx")
return oauthfranco
startTime = datetime.now()
oauth = get_oauth()
oauthf = get_oauthfranco()
requests.post(url, data={'screen_name':'vuoc','text':'hello ppls ' + found}, auth=oauth, stream=True)
requests.post(url, data={'screen_name':'vuoc','text':'hello ppls number 2 ' + found}, auth=oauth)
requests.post(url, data={'screen_name':'vuoc','text':'hello ppls number 3 ' + found}, auth=oauthf, stream=True)
requests.post(url, data={'screen_name':'vuoc','text':'hello ppls number 4 ' + found}, auth=oauthf)
requests.post(url, data={'screen_name':'vuoc','text':'hello ppls number 5 ' + found}, auth=oauths, stream=True)
当然,最终产品将包含的不仅仅是4个帖子请求(希望做到20个以上)。
非常感谢任何关于如何通过线程/异步来优化速度的建议,而STILL能够使用oauth非常感谢!
答案 0 :(得分:1)
查看http://docs.python.org/dev/library/concurrent.futures.html#threadpoolexecutor-example
concurrent.futures可用作旧版python版本的pypi上的backport