Python 如何进行实时推特分类

Python 如何进行实时推特分类,python,twitter,classification,tweepy,Python,Twitter,Classification,Tweepy,我正在尝试做实时推特分类。为此,我使用tweepy流媒体类。我想 获取一条推特 将它存储在数据库中,在我的例子中,它是一个文本文件 阅读文本文件并 对tweet进行分类 问题是我的系统一直在获取推文并保存它。它不会移动到下一步。 我该怎么办 流式代码 import tweepy class MyStreamListener(tweepy.StreamListener): def on_status(self, status): if not status.text.

我正在尝试做实时推特分类。为此,我使用tweepy流媒体类。我想

  • 获取一条推特
  • 将它存储在数据库中,在我的例子中,它是一个文本文件
  • 阅读文本文件并
  • 对tweet进行分类
问题是我的系统一直在获取推文并保存它。它不会移动到下一步。 我该怎么办

流式代码

import tweepy
class MyStreamListener(tweepy.StreamListener):

    def on_status(self, status):
        if not status.text.startswith('RT'):
            if 'https://t.co' not in  status.text:
                text=status.text
                with open("Output.txt", "w",encoding='utf-8') as text_file:
                    text_file.write(text)

# Initializing the tokens
def run_stream():
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)

    api = tweepy.API(auth,wait_on_rate_limit=True)
    myStreamListener = MyStreamListener()
    myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener,tweet_mode= 'extended')
    myStream.filter(track=['corona'],languages=["en"],encoding='utf-8')
分类

def classify():
    f = open("Output.txt", "r",encoding="utf-8")
    return f.read(),clf.predict_proba(feat.transform([f.read()]))
run_stream()
classify()
运行该功能

def classify():
    f = open("Output.txt", "r",encoding="utf-8")
    return f.read(),clf.predict_proba(feat.transform([f.read()]))
run_stream()
classify()
我面临的问题是,系统继续运行第一个功能,而不移动到下一个分类功能

来自:

除非连接关闭,否则流不会终止,从而阻塞 线Tweepy在过滤器上提供了一个方便的is_异步参数,因此 流将在新线程上运行。比如说

myStream.filter(track=['python'], is_async=True)

如果您这样做,我怀疑您需要小心地管理对Output.txt的读写访问,否则您可能会在文件包含部分写入时读取该文件。使用专门构建的线程安全排队机制可能更好,比如。

因此,有另一种方法可以返回tweet of out tweepy,而不将其存储在文本文件或数据库中文本文件可能是最容易理解的,但要使线程安全就不那么容易了。假设数据库可以同时处理生产者和消费者,那么它可能工作得很好。