tyrion

twitter.py

Feb 12th, 2014
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.39 KB | None | 0 0
  1. import json
  2. import os
  3. import signal
  4. import time
  5. import traceback
  6. from contextlib import closing
  7. from multiprocessing import Manager, Process, Queue
  8. from multiprocessing.managers import SyncManager
  9.  
  10.  
  11.  
  12. def training_crawler(queue, track, lang='en', limit=-1):
  13.     signal.signal(signal.SIGINT, signal.SIG_IGN)
  14.     while True:
  15.         time.sleep(2)
  16.         tweet = {'text': 'blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}
  17.         try:
  18.             queue.put(tweet)
  19.         except IOError:
  20.             return
  21.  
  22. def logger(queue):
  23.     signal.signal(signal.SIGINT, signal.SIG_IGN)
  24.     for tweet in iter(queue.get, 'STOP'):
  25.         print tweet['text']
  26.  
  27.  
  28. def start(lang, fields=('pos', 'neg'), track=':(,:)'):
  29.     manager = SyncManager()
  30.     manager.start(signal.signal, [signal.SIGINT, signal.SIG_IGN])
  31.  
  32.     queue = manager.Queue(5000)
  33.  
  34.     crawler = Process(target=training_crawler, args=(queue, track, lang))
  35.     worker = Process(target=logger, args=(queue,))
  36.  
  37.     crawler.start()
  38.     worker.start()
  39.  
  40.    
  41.     def handler(sig, frame):
  42.         print 'Received Ctrl+C terminating..'
  43.        
  44.         queue.put('STOP')
  45.         time.sleep(3)
  46.         if worker.is_alive():
  47.             worker.terminate()
  48.             worker.join()
  49.         crawler.terminate()
  50.         crawler.join()
  51.         manager.shutdown()
  52.  
  53.     signal.signal(signal.SIGINT, handler)
  54.     return manager,queue,crawler,worker
Advertisement
Add Comment
Please, Sign In to add comment