我正在用Python构建一个与Twitter交互的消息应用程序。我想创建一个全局FIFO队列,以便twitterConnection对象可以访问并插入新消息。
这是应用程序的主要部分:
具体来说,我希望能够调用TwitterConnector类的.GetMentions()方法,并处理任何新提及,并将这些消息放入队列以进行单独处理。
以下是目前的TwitterConnector类:
任何帮助都将不胜感激。
更新:让我看看是否可以更清楚地阐明用例。我的TwitterConnector旨在检索消息,并最终将twitter状态对象转换为包含下游处理所需信息的简化对象。在同一方法中,它将执行一些其他计算,以尝试确定其他所需信息。实际上,我想将转换后的对象放入队列中。作为一个简化的示例,此方法将将twitter状态对象映射到一个新对象中,该对象将包含属性,例如:原始网络(twitter)、用户名、消息和位置(如果可用)。然后将此新对象放入队列中。
最终,将有其他连接器用于其他消息系统,它们将执行类似的操作。它们将接收消息填充新消息对象并将其放入相同的队列以进行进一步处理。一旦消息完全处理完毕,则会制定响应,然后将其添加到适当的队列以进行传输。使用上述新对象,一旦对推文内容的实际处理完成,那么基于原始网络和用户名,可能会通过twitter向发起人返回响应。
这是应用程序的主要部分:
#!/usr/bin/python
from twitterConnector import TwitterConnector
from Queue import deque
#instantiate the request queue
requestQueue = deque()
#instantiate the twitter connector
twitterInterface = TwitterConnector()
#Get all new mentions
twitterInterface.GetMentions()
具体来说,我希望能够调用TwitterConnector类的.GetMentions()方法,并处理任何新提及,并将这些消息放入队列以进行单独处理。
以下是目前的TwitterConnector类:
class TwitterConnector:
def __init__(self):
self.connection = twitter.Api(consumer_key=self.consumer_key,consumer_secret=self.consumer_secret,access_token_key=self.access_token_key,access_token_secret=self.access_token_secret)
self.mentions_since_id = None
def VerifyCredentials(self):
print self.connection.VerifyCredentials()
def GetMentions(self):
mentions = self.connection.GetMentions(since_id=self.mentions_since_id)
for mention in mentions:
print mention.text
global requestQueue.add(mention) # <- error
任何帮助都将不胜感激。
更新:让我看看是否可以更清楚地阐明用例。我的TwitterConnector旨在检索消息,并最终将twitter状态对象转换为包含下游处理所需信息的简化对象。在同一方法中,它将执行一些其他计算,以尝试确定其他所需信息。实际上,我想将转换后的对象放入队列中。作为一个简化的示例,此方法将将twitter状态对象映射到一个新对象中,该对象将包含属性,例如:原始网络(twitter)、用户名、消息和位置(如果可用)。然后将此新对象放入队列中。
最终,将有其他连接器用于其他消息系统,它们将执行类似的操作。它们将接收消息填充新消息对象并将其放入相同的队列以进行进一步处理。一旦消息完全处理完毕,则会制定响应,然后将其添加到适当的队列以进行传输。使用上述新对象,一旦对推文内容的实际处理完成,那么基于原始网络和用户名,可能会通过twitter向发起人返回响应。
我曾考虑在构造函数中传递队列的引用(或作为方法的参数),我也考虑过修改方法以返回新对象的列表并迭代它们以将它们放入队列中,但我想确保没有更好或更有效的方式来处理这个问题。我还希望能够对日志对象和数据库处理程序执行相同的操作。你有什么想法吗?
TwitterConnector
,而不是使用现有的 Python API 呢? - jsalonen