【问题标题】:Change POST request parameters when using Twitter's Streaming API使用 Twitter 的 Streaming API 时更改 POST 请求参数
【发布时间】:2012-07-01 01:40:41
【问题描述】:

我正在使用 Python 和 RequestsTwitter's streaming 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 的请求?我实际上是在创建多个连接吗?如果是这样,我该如何避免这种情况? (有一个关于如何close the previous connections 的建议,但这个解决方案对我来说不太有意义。)

如果有任何帮助,我将不胜感激。谢谢!

【问题讨论】:

    标签: python post twitter httprequest python-requests


    【解决方案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})
    

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

    【讨论】:

    • 快乐是我的全部。就keep-alive 而言,我确实需要为自己学习一些东西,所以我们都受益了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多