[英]Tweepy streaming with Flask socketio
我想在收到推文時將實時推文流發送給客戶端。
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
MyCustomNamespace.tweet_received(status.text)
class MyCustomNamespace(Namespace):
def on_connect(self):
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
myStreamListener = MyStreamListener()
global myStream
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStream.filter(track=['love'], async=True)
def on_disconnect(self):
pass
@staticmethod
def tweet_received(text):
emit('tweet_response', {'text': text})
socketio.on_namespace(MyCustomNamespace('/'))
但是我收到一個Runtime Error: Working outside of request context
錯誤Runtime Error: Working outside of request context
。 我如何接近做我想做的事? 謝謝。
您在tweet_received()
中的emit()
調用沒有客戶端上下文來知道將數據發送到哪里。
您可以通過添加設置命名空間和事件接收者的附加參數來修復它。 例如:
@staticmethod
def tweet_received(text):
emit('tweet_response', {'text': text}, broadcast=True, namespace='/')
此版本將發送給/
命名空間上的所有客戶端。 您可能需要將其更改為最適合您的應用程序的方式,但希望您能明白這一點。
您是否有Github帳戶,如果可以,可以與我分享嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.