in Python 2.7 Ich bin erfolgreich in dem folgenden Code verwenden, um eine direkte Nachrichtenstrom auf einem Konto zu hören:Python Tweepy Streaming mit
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy import API
from tweepy.streaming import StreamListener
# These values are appropriately filled in the code
consumer_key = '######'
consumer_secret = '######'
access_token = '######'
access_token_secret = '######'
class StdOutListener(StreamListener):
def __init__(self):
self.tweetCount = 0
def on_connect(self):
print("Connection established!!")
def on_disconnect(self, notice):
print("Connection lost!! : ", notice)
def on_data(self, status):
print("Entered on_data()")
print(status, flush = True)
return True
# I can add code here to execute when a message is received, such as slicing the message and activating something else
def on_direct_message(self, status):
print("Entered on_direct_message()")
try:
print(status, flush = True)
return True
except BaseException as e:
print("Failed on_direct_message()", str(e))
def on_error(self, status):
print(status)
def main():
try:
auth = OAuthHandler(consumer_key, consumer_secret)
auth.secure = True
auth.set_access_token(access_token, access_token_secret)
api = API(auth)
# If the authentication was successful, you should
# see the name of the account print out
print(api.me().name)
stream = Stream(auth, StdOutListener())
stream.userstream()
except BaseException as e:
print("Error in main()", e)
if __name__ == '__main__':
main()
Das ist großartig, und ich kann auch Code ausführen, wenn ich erhalte eine Nachricht, aber die Jobs, die ich zu einer Arbeitswarteschlange hinzufüge, müssen nach einer gewissen Zeit anhalten können. Ich verwende einen populären Start = time.time() und subtrahiere die aktuelle Zeit, um die verstrichene Zeit zu bestimmen, aber dieser Streaming-Code führt keine Schleife durch, um die Zeit zu überprüfen. Ich warte nur auf eine neue Nachricht, also wird die Uhr nie sozusagen überprüft.
Meine Frage ist dies: Wie kann ich Streaming auftreten und noch verstrichene Zeit verfolgen? Muss ich Multithreading wie in diesem Artikel beschrieben verwenden? http://www.tutorialspoint.com/python/python_multithreading.htm
Ich bin neu bei Python und habe Spaß beim Spielen mit Hardware an einem Raspberry Pi. Ich habe so viel von Stackoverflow gelernt, danke euch allen :)
Don Ich mag deine Idee, ich denke, ich werde es in meiner Gesäßtasche behalten und dieses Multithreading Ding versuchen. Ich denke, wenn ich das streaming in eine einzige Funktion teilen kann (ich denke es wäre main()) und irgendwie globale Variablen aktualisieren könnte, die dann von dem anderen Thread zugänglich sind, könnte ich gut gehen. – sakko303