1

我正在使用 Python 和RequestsTwitter 的流 API请求数据。我想用一组参数请求数据,一段时间后,用一组新的参数改变请求。

在以下简单、有效的示例中,我向 Twitter 流式 API 询问带有关键字“python”的推文。一个小时后,我向 API 询问关键字“ruby”。但是,为此,我正在创建一个新的请求对象;我没有改变原始对象。

import requests
import json
import time

USER = 'user'
PW = 'pw'

def make_request(keyword):
    r = requests.post('https://stream.twitter.com/1/statuses/filter.json',
    data={'track': keyword}, auth=(USER,PW))

    for line in r.iter_lines():
        if line:
            print json.loads(line)

        if time.time() > start_of_last_request + 3600:
            break

count = 0

keywords = ['python', 'ruby']

while count < 2:
    start_of_last_request = time.time()

    make_request(keywords[count])

    count = count + 1

最终,我需要每小时创建一个新查询,我担心会创建太多连接。

我的问题是:有没有更好的方法来更改对 Twitter API 的请求?我实际上是在创建多个连接吗?如果是这样,我该如何避免这种情况?(有一个关于如何关闭以前的连接的建议,但这个解决方案对我来说不太有意义。)

我将不胜感激任何帮助。谢谢!

4

1 回答 1

1

当您链接时,为了在完成请求后关闭连接,请将keep-alive值设置为False而不是默认值True

r = requests.post('https://stream.twitter.com/1/statuses/filter.json',
               data={'track': keyword}, auth=(USER,PW),
               config={'keep_alive':False})

这将确保连接完成后关闭。

于 2012-07-01T02:04:52.970 回答