加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – GAE上的Twitter流媒体

发布时间:2020-12-16 21:56:17 所属栏目:Python 来源:网络整理
导读:为什么我会收到此错误?这就是我如何调用流API. import tweepyimport syscreds = json.loads(open('credential.json').read())tw_consumer_key = creds['tw_consumer_key']tw_consumer_secret = creds['tw_consumer_secret']tw_access_token = creds['tw_acc

为什么我会收到此错误?这就是我如何调用流API.

import tweepy
import sys

creds = json.loads(open('credential.json').read())
tw_consumer_key = creds['tw_consumer_key']
tw_consumer_secret = creds['tw_consumer_secret']
tw_access_token = creds['tw_access_token']
tw_access_token_secret = creds['tw_access_token_secret']

try:
    auth = tweepy.OAuthHandler(tw_consumer_key,tw_consumer_secret)
    auth.set_access_token(tw_access_token,tw_access_token_secret)
    api = tweepy.API(auth)
except Exception:
    service = None
    api = None    

# Query terms
Q = "Better"

class CustomStreamListener(tweepy.StreamListener):
    def on_status(self,status):
        try:
            print "%sn%sn%sn%snn" % (status.text,status.author.screen_name,status.created_at,status.source,)
        except Exception,e:
            print >> sys.stderr,'Encountered Exception:',e
            pass

    def on_error(self,status_code):
        print >> sys.stderr,'Encountered error with status code:',status_code
        return True # Don't kill the stream

    def on_timeout(self):
        print >> sys.stderr,'Timeout...'
        return True # Don't kill the stream



class LiveStream(webapp2.RequestHandler):
    def get(self):
        streaming_api = tweepy.streaming.Stream(auth,CustomStreamListener(),timeout=60)
        self.response.out.write(streaming_api.filter(track=Q))

可能由GAE引起的不允许套接字,我不知道如何应用查询术语来获取特定的过滤流式推文.这部分代码的目的是获取指定关键字的实时流.如果有其他方法,请指导.

最佳答案
在App Engine上,httplib连接(和urllib)将使用Google URL提取服务. URL Fetch service表示其他服务器(不是app引擎服务实例)执行请求并将响应返回给app引擎实例,而不是进程本身打开套接字.

我相信你注意到在GAE上运行的httplib变体没有提供用于设置超时的sock属性.但基本问题是无法获得流,在响应完成之前,您不会将任何结果返回到应用程序引擎中.我还没有测试它是如何失败的,但我希望你会从URL服务中获得DeadlineExceededError,因为Twitter不会关闭流响应.

目前没有替代方法可以在GAE上获取流.它可能适用于后端的出站套接字支持.套接字支持目前仅适用于测试人员.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读