我在python中構建了一個與twitter接口的消息應用程序我想創建一個全局的fifo隊列,twitterConnection對象可以通過它訪問插入新消息。訪問python中的全局隊列對象
這是應用程序的主要部分:
#!/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()
具體來說,我希望能夠調用.GetMentions()的TwitterConnector類的方法和處理任何新提及,並把這些消息到隊列分開處理。
這是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狀態對象映射到一個新的對象,該對象將包含如origin網絡(twitter),用戶名,消息和位置(如果可用)的屬性。這個新對象將被放入隊列中。
最終會有其他連接器用於執行類似操作的其他消息傳遞系統。他們將收到一條消息,填充新的消息對象並將它們放入同一隊列以供進一步處理。一旦消息被完全處理後,將制定一個響應,然後將其添加到適當的隊列中以供傳送。使用上面描述的新對象,一旦推特內容的實際處理髮生,然後基於起源網絡和用戶名,響應可以通過twitter返回給始發者。
我曾想過在承包商中傳遞對隊列的引用(或作爲方法的參數)我也想過修改方法以返回新對象的列表並遍歷它們以將它們放入隊列,但我想確保沒有更好或更有效的方法來處理這個問題。我也希望能夠用日誌記錄對象和數據庫處理程序做同樣的事情。思考?
你得到的錯誤是什麼? – jsalonen
我會問你很明顯:你爲什麼要定義你自己的'TwitterConnector'而不是使用現有的Python API呢? – jsalonen
對於健壯的共享隊列,您可能需要使用AMQP。看看芹菜。 –