script/stream/recorder_stream.py
author Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Fri, 10 May 2013 13:34:40 +0200
changeset 893 10a19dd4e1c9
parent 528 script/stream/recorder_tweetstream.py@7fb5a7b0d35c
parent 890 script/stream/recorder_tweetstream.py@9c57883dbb9d
child 919 e126d3e1e186
permissions -rw-r--r--
Merge with 357990a5f8cc85fd4181b2d8d0556b6c05fcf287
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
     1
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
     2
from iri_tweet import models, utils
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
     3
from iri_tweet.models import TweetSource, TweetLog, ProcessEvent
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
     4
from iri_tweet.processor import get_processor
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
     5
from multiprocessing import Queue as mQueue, Process, Event
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
     6
from sqlalchemy.exc import OperationalError
289
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
     7
from sqlalchemy.orm import scoped_session
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
     8
import Queue
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
     9
import StringIO
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
    10
import anyjson
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    11
import argparse
199
514e0ee0c68a add a duration. not quitewhat expected but that will do
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 82
diff changeset
    12
import datetime
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
    13
import inspect
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
    14
import iri_tweet.stream
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    15
import logging
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
    16
import os
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    17
import re
884
07f1c6854df9 update virtualenv creation
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 883
diff changeset
    18
import requests_oauthlib
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
    19
import shutil
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
    20
import signal
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
    21
import socket
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    22
import sqlalchemy.schema
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
    23
import sys
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    24
import thread
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
    25
import threading
206
6d642d650470 Improve tweet recorder log info
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 199
diff changeset
    26
import time
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
    27
import traceback
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    28
import urllib2
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    29
socket._fileobject.default_bufsize = 0
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
    30
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    31
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    32
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
    33
# columns_tweet = [u'favorited', u'truncated', u'text', u'created_at', u'source', u'in_reply_to_status_id', u'in_reply_to_screen_name', u'in_reply_to_user_id', u'geo', u'id', u'user']
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    34
columns_tweet = [u'user', u'favorited', u'contributors', u'truncated', u'text', u'created_at', u'retweeted', u'in_reply_to_status_id_str', u'coordinates', u'in_reply_to_user_id_str', u'entities', u'in_reply_to_status_id', u'place', u'in_reply_to_user_id', u'id', u'in_reply_to_screen_name', u'retweet_count', u'geo', u'id_str', u'source']
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
    35
# columns_user = [u'id', u'verified', u'profile_sidebar_fill_color', u'profile_text_color', u'followers_count', u'protected', u'location', u'profile_background_color', u'utc_offset', u'statuses_count', u'description', u'friends_count', u'profile_link_color', u'profile_image_url', u'notifications', u'geo_enabled', u'profile_background_image_url', u'screen_name', u'profile_background_tile', u'favourites_count', u'name', u'url', u'created_at', u'time_zone', u'profile_sidebar_border_color', u'following']
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    36
columns_user = [u'follow_request_sent', u'profile_use_background_image', u'id', u'verified', u'profile_sidebar_fill_color', u'profile_text_color', u'followers_count', u'protected', u'location', u'profile_background_color', u'id_str', u'utc_offset', u'statuses_count', u'description', u'friends_count', u'profile_link_color', u'profile_image_url', u'notifications', u'show_all_inline_media', u'geo_enabled', u'profile_background_image_url', u'name', u'lang', u'following', u'profile_background_tile', u'favourites_count', u'screen_name', u'url', u'created_at', u'contributors_enabled', u'time_zone', u'profile_sidebar_border_color', u'is_translator', u'listed_count']
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
    37
# just put it in a sqlite3 tqble
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    38
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    39
DEFAULT_TIMEOUT = 3
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    40
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    41
class Requesthandler(BaseHTTPRequestHandler):
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    42
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    43
    def __init__(self, request, client_address, server):
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    44
        BaseHTTPRequestHandler.__init__(self, request, client_address, server)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    45
        
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    46
    def do_GET(self):
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    47
        self.send_response(200)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    48
        self.end_headers()
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    49
    
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    50
    def log_message(self, format, *args):        # @ReservedAssignment
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    51
        pass
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    52
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    53
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    54
def set_logging(options):
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
    55
    loggers = []
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
    56
    
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
    57
    loggers.append(utils.set_logging(options, logging.getLogger('iri.tweet')))
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
    58
    loggers.append(utils.set_logging(options, logging.getLogger('multiprocessing')))
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    59
    if options.debug >= 2:
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
    60
        loggers.append(utils.set_logging(options, logging.getLogger('sqlalchemy.engine')))
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
    61
    # utils.set_logging(options, logging.getLogger('sqlalchemy.dialects'))
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
    62
    # utils.set_logging(options, logging.getLogger('sqlalchemy.pool'))
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
    63
    # utils.set_logging(options, logging.getLogger('sqlalchemy.orm'))
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
    64
    return loggers
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    65
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
    66
def set_logging_process(options, queue):
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
    67
    qlogger = utils.set_logging(options, logging.getLogger('iri.tweet.p'), queue)
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
    68
    qlogger.propagate = 0
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
    69
    return qlogger
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
    70
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    71
def get_auth(options, access_token):
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    72
    consumer_key = options.consumer_key
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    73
    consumer_secret = options.consumer_secret
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    74
    auth = requests_oauthlib.OAuth1(client_key=consumer_key, client_secret=consumer_secret, resource_owner_key=access_token[0], resource_owner_secret=access_token[1], signature_type='auth_header')
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    75
    return auth
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    76
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
    77
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    78
def add_process_event(event_type, args, session_maker):
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    79
    session = session_maker()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    80
    try:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    81
        evt = ProcessEvent(args=None if args is None else anyjson.serialize(args), type=event_type)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    82
        session.add(evt)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    83
        session.commit()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    84
    finally:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    85
        session.close()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    86
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
    87
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
    88
class BaseProcess(Process):
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
    89
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    90
    def __init__(self, session_maker, queue, options, access_token, stop_event, logger_queue, parent_pid):
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
    91
        self.parent_pid = parent_pid
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    92
        self.session_maker = session_maker
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    93
        self.queue = queue
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    94
        self.options = options
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    95
        self.logger_queue = logger_queue
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    96
        self.stop_event = stop_event
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
    97
        self.consumer_token = (options.consumer_key, options.consumer_secret)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    98
        self.access_token = access_token
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
    99
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   100
        super(BaseProcess, self).__init__()
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   101
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   102
    #
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   103
    # from http://stackoverflow.com/questions/2542610/python-daemon-doesnt-kill-its-kids
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   104
    #
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   105
    def parent_is_alive(self):
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   106
        try:
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   107
            # try to call Parent
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   108
            os.kill(self.parent_pid, 0)
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   109
        except OSError:
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   110
            # *beeep* oh no! The phone's disconnected!
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   111
            return False
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   112
        else:
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   113
            # *ring* Hi mom!
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   114
            return True
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   115
    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   116
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   117
    def __get_process_event_args(self):
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   118
        return {'name':self.name, 'pid':self.pid, 'parent_pid':self.parent_pid, 'options':self.options.__dict__, 'access_token':self.access_token}
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   119
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   120
    def run(self):
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   121
        try:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   122
            add_process_event("start_worker", self.__get_process_event_args(), self.session_maker)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   123
            self.do_run()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   124
        finally:
289
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   125
            add_process_event("stop_worker", self.__get_process_event_args(), self.session_maker)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   126
        
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   127
    def do_run(self):
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   128
        raise NotImplementedError()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   129
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   130
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   131
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   132
class SourceProcess(BaseProcess):
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   133
    
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   134
    def __init__(self, session_maker, queue, options, access_token, stop_event, logger_queue, parent_pid):
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   135
        self.track = options.track
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   136
        self.token_filename = options.token_filename
528
7fb5a7b0d35c remove reconnecting stream and propagate options
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 464
diff changeset
   137
        self.timeout = options.timeout
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   138
        self.stream = None
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   139
        super(SourceProcess, self).__init__(session_maker, queue, options, access_token, stop_event, logger_queue, parent_pid)
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   140
                    
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   141
    def __source_stream_iter(self):
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   142
                
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   143
        self.logger.debug("SourceProcess : run ")
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   144
        
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   145
        self.logger.debug("SourceProcess : get_auth auth with option %s and token %s " %(self.options, self.access_token))
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   146
        self.auth = get_auth(self.options, self.access_token) 
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   147
        self.logger.debug("SourceProcess : auth set ")
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   148
        
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
   149
        track_list = self.track  # or raw_input('Keywords to track (comma seperated): ').strip()
528
7fb5a7b0d35c remove reconnecting stream and propagate options
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 464
diff changeset
   150
        self.logger.debug("SourceProcess : track list " + track_list)
7fb5a7b0d35c remove reconnecting stream and propagate options
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 464
diff changeset
   151
        
7fb5a7b0d35c remove reconnecting stream and propagate options
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 464
diff changeset
   152
        track_list = [k.strip() for k in track_list.split(',')]
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   153
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   154
        self.logger.debug("SourceProcess : before connecting to stream %s, url : %s, auth : %s" % (repr(track_list), self.options.url, repr(self.auth)))                        
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   155
        self.stream = iri_tweet.stream.FilterStream(self.auth, track=track_list, raw=True, url=self.options.url, timeout=self.timeout, chunk_size=512, logger=self.logger)
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   156
        self.logger.debug("SourceProcess : after connecting to stream")
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   157
        self.stream.muststop = lambda: self.stop_event.is_set()        
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   158
        
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
   159
        stream_wrapper = iri_tweet.stream.SafeStreamWrapper(self.stream, logger=self.logger)
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   160
        
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   161
        session = self.session_maker()
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   162
        
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   163
        #import pydevd
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   164
        #pydevd.settrace(suspend=False)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   165
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   166
        
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   167
        try:
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   168
            for tweet in stream_wrapper:
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   169
                if not self.parent_is_alive():
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   170
                    self.stop_event.set()
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   171
                    sys.exit()
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   172
                self.logger.debug("SourceProcess : tweet " + repr(tweet))
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   173
                source = TweetSource(original_json=tweet)
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   174
                self.logger.debug("SourceProcess : source created")
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   175
                add_retries = 0
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   176
                while add_retries < 10:
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   177
                    try:
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   178
                        add_retries += 1
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   179
                        session.add(source)
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   180
                        session.flush()
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   181
                        break
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   182
                    except OperationalError as e:
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   183
                        session.rollback()
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   184
                        self.logger.debug("SourceProcess : Operational Error %s nb %d" % (repr(e), add_retries))
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   185
                        if add_retries == 10:
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   186
                            raise
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   187
                     
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   188
                source_id = source.id
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   189
                self.logger.debug("SourceProcess : before queue + source id " + repr(source_id))
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   190
                self.logger.info("SourceProcess : Tweet count: %d - current rate : %.2f - running : %s" % (self.stream.count, self.stream.rate, int(time.time() - self.stream.starttime)))
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   191
                session.commit()
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   192
                self.queue.put((source_id, tweet), False)
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   193
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   194
        except Exception as e:
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   195
            self.logger.error("SourceProcess : Error when processing tweet " + repr(e))
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   196
            raise
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   197
        finally:
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   198
            session.rollback()
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   199
            session.close()
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   200
            self.stream.close()
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   201
            self.stream = None
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   202
            if not self.stop_event.is_set():
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   203
                self.stop_event.set()
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   204
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   205
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   206
    def do_run(self):
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   207
        
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   208
        self.logger = set_logging_process(self.options, self.logger_queue)                
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   209
        
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   210
        source_stream_iter_thread = threading.Thread(target=self.__source_stream_iter , name="SourceStreamIterThread")
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   211
        
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   212
        source_stream_iter_thread.start()
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   213
        
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   214
        try:
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   215
            while not self.stop_event.is_set():
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   216
                self.logger.debug("SourceProcess : In while after start")
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   217
                self.stop_event.wait(DEFAULT_TIMEOUT)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   218
        except KeyboardInterrupt:
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   219
            self.stop_event.set()
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   220
            pass
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   221
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   222
        if self.stop_event.is_set() and self.stream:
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   223
            self.stream.close()
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   224
        elif not self.stop_event.is_set() and not source_stream_iter_thread.is_alive:
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   225
            self.stop_event.set()
890
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   226
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   227
        self.queue.cancel_join_thread()
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   228
        self.logger_queue.cancel_join_thread()
738
2497c7f38e0a correct. remove mutex and clear
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 737
diff changeset
   229
        self.logger.info("SourceProcess : join")
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   230
        source_stream_iter_thread.join(30)
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   231
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   232
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   233
def process_tweet(tweet, source_id, session, consumer_token, access_token, twitter_query_user, token_filename, logger):
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   234
    try:
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   235
        if not tweet.strip():
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   236
            return
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   237
        tweet_obj = anyjson.deserialize(tweet)
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   238
        processor_klass = get_processor(tweet_obj)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   239
        if not processor_klass:
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   240
            tweet_log = TweetLog(tweet_source_id=source_id, status=TweetLog.TWEET_STATUS['NOT_TWEET'])
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   241
            session.add(tweet_log)
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   242
            return
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   243
        processor = processor_klass(json_dict=tweet_obj,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   244
                                    json_txt=tweet,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   245
                                    source_id=source_id,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   246
                                    session=session,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   247
                                    consumer_token=consumer_token,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   248
                                    access_token=access_token,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   249
                                    token_filename=token_filename,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   250
                                    user_query_twitter=twitter_query_user,
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   251
                                    logger=logger)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   252
        logger.info(processor.log_info())                        
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   253
        logger.debug(u"Process_tweet :" + repr(tweet))                
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   254
        processor.process()
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   255
        
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   256
    except ValueError as e:
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   257
        message = u"Value Error %s processing tweet %s" % (repr(e), tweet)
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   258
        output = StringIO.StringIO()
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   259
        try:
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   260
            traceback.print_exc(file=output)
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   261
            error_stack = output.getvalue()
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   262
        finally:
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   263
            output.close()
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   264
        tweet_log = TweetLog(tweet_source_id=source_id, status=TweetLog.TWEET_STATUS['NOT_TWEET'], error=message, error_stack=error_stack)
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   265
        session.add(tweet_log)
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   266
        session.commit()        
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   267
    except Exception as e:
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   268
        message = u"Error %s processing tweet %s" % (repr(e), tweet)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   269
        logger.exception(message)
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   270
        output = StringIO.StringIO()
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   271
        try:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   272
            traceback.print_exc(file=output)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   273
            error_stack = output.getvalue()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   274
        finally:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   275
            output.close()
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   276
        session.rollback()
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   277
        tweet_log = TweetLog(tweet_source_id=source_id, status=TweetLog.TWEET_STATUS['ERROR'], error=message, error_stack=error_stack)
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   278
        session.add(tweet_log)
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   279
        session.commit()
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   280
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   281
    
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   282
        
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   283
class TweetProcess(BaseProcess):
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   284
    
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   285
    def __init__(self, session_maker, queue, options, access_token, stop_event, logger_queue, parent_pid):
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   286
        super(TweetProcess, self).__init__(session_maker, queue, options, access_token, stop_event, logger_queue, parent_pid)
464
b9243ade95e2 code cleaning and reorganisation for scripts
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 425
diff changeset
   287
        self.twitter_query_user = options.twitter_query_user
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   288
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   289
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   290
    def do_run(self):
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   291
        
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   292
        self.logger = set_logging_process(self.options, self.logger_queue)
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   293
        session = self.session_maker()
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   294
        try:
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   295
            while not self.stop_event.is_set() and self.parent_is_alive():
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   296
                try:
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   297
                    source_id, tweet_txt = self.queue.get(True, 3)
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   298
                    self.logger.debug("Processing source id " + repr(source_id))
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   299
                except Exception as e:
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   300
                    self.logger.debug('Process tweet exception in loop : ' + repr(e))
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   301
                    continue
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   302
                process_tweet(tweet_txt, source_id, session, self.consumer_token, self.access_token, self.twitter_query_user, self.options.token_filename, self.logger)
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   303
                session.commit()
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   304
        except KeyboardInterrupt:
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   305
            self.stop_event.set()
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   306
        finally:
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   307
            session.rollback()
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   308
            session.close()
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   309
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   310
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   311
def get_sessionmaker(conn_str):
289
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   312
    engine, metadata, Session = models.setup_database(conn_str, echo=False, create_all=False, autocommit=False)
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   313
    Session = scoped_session(Session)
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   314
    return Session, engine, metadata
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   315
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   316
            
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   317
def process_leftovers(session, consumer_token, access_token, twitter_query_user, token_filename, ask_process_leftovers, logger):
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   318
    
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   319
    sources = session.query(TweetSource).outerjoin(TweetLog).filter(TweetLog.id == None)
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   320
    sources_count = sources.count()
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   321
    
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   322
    if sources_count > 10 and ask_process_leftovers:
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   323
        resp = raw_input("Do you want to process leftovers (Y/n) ? (%d tweet to process)" % sources_count)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   324
        if resp and resp.strip().lower() == "n":
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   325
            return
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   326
    logger.info("Process leftovers, %d tweets to process" % (sources_count))
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   327
    for src in sources:
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   328
        tweet_txt = src.original_json
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   329
        process_tweet(tweet_txt, src.id, session, consumer_token, access_token, twitter_query_user, token_filename, logger)
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   330
        session.commit()
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   331
        
15
5d552b6a0e55 add oauth authentication to tweetstream
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 11
diff changeset
   332
    
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   333
def process_log(logger_queues, stop_event):
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   334
    while not stop_event.is_set():
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   335
        for lqueue in logger_queues:
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   336
            try:
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   337
                record = lqueue.get_nowait()
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   338
                logging.getLogger(record.name).handle(record)
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   339
            except Queue.Empty:
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   340
                continue
256
2f335337ff64 Do not stop on IOErrors
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 255
diff changeset
   341
            except IOError:
2f335337ff64 Do not stop on IOErrors
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 255
diff changeset
   342
                continue
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   343
        time.sleep(0.1)
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   344
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
   345
        
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
   346
def get_options():
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   347
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   348
    usage = "usage: %(prog)s [options]"
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   349
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   350
    parser = argparse.ArgumentParser(usage=usage)
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   351
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   352
    parser.add_argument("-f", "--file", dest="conn_str",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   353
                        help="write tweet to DATABASE. This is a connection string", metavar="CONNECTION_STR", default="enmi2010_twitter.db")
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   354
    parser.add_argument("-T", "--track", dest="track",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   355
                        help="Twitter track", metavar="TRACK")
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   356
    parser.add_argument("-k", "--key", dest="consumer_key",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   357
                        help="Twitter consumer key", metavar="CONSUMER_KEY", required=True)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   358
    parser.add_argument("-s", "--secret", dest="consumer_secret",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   359
                        help="Twitter consumer secret", metavar="CONSUMER_SECRET", required=True)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   360
    parser.add_argument("-n", "--new", dest="new", action="store_true",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   361
                        help="new database", default=False)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   362
    parser.add_argument("-D", "--daemon", dest="daemon", action="store_true",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   363
                        help="launch daemon", default=False)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   364
    parser.add_argument("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   365
                        help="Token file name")
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   366
    parser.add_argument("-d", "--duration", dest="duration",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   367
                        help="Duration of recording in seconds", metavar="DURATION", default= -1, type=int)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   368
    parser.add_argument("-N", "--nb-process", dest="process_nb",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   369
                        help="number of process.\nIf 0, only the lefovers of the database are processed.\nIf 1, no postprocessing is done on the tweets.", metavar="PROCESS_NB", default=2, type=int)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   370
    parser.add_argument("--url", dest="url",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   371
                        help="The twitter url to connect to.", metavar="URL", default=iri_tweet.stream.FilterStream.url)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   372
    parser.add_argument("--query-user", dest="twitter_query_user", action="store_true",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   373
                        help="Query twitter for users", default=False)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   374
    parser.add_argument("--timeout", dest="timeout",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   375
                        help="timeout for connecting in seconds", default=60, metavar="TIMEOUT", type=int)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   376
    parser.add_argument("--ask-process-leftovers", dest="ask_process_leftovers", action="store_false",
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   377
                        help="ask process leftover", default=True)
290
2ddd11ec2da2 - twitter is https only now
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 289
diff changeset
   378
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   379
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
   380
    utils.set_logging_options(parser)
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   381
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
   382
    return parser.parse_args()
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   383
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   384
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   385
def do_run(options, session_maker):
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   386
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   387
    stop_args = {}
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   388
    
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   389
    consumer_token = (options.consumer_key, options.consumer_secret)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   390
    access_token = utils.get_oauth_token(consumer_key=consumer_token[0], consumer_secret=consumer_token[1], token_file_path=options.token_filename)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   391
    
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
   392
    
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   393
    session = session_maker()
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   394
    try:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   395
        process_leftovers(session, consumer_token, access_token, options.twitter_query_user, options.token_filename, options.ask_process_leftovers, utils.get_logger())
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   396
        session.commit()
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   397
    finally:
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   398
        session.rollback()
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   399
        session.close()
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   400
    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   401
    if options.process_nb <= 0:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   402
        utils.get_logger().debug("Leftovers processed. Exiting.")
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   403
        return None
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   404
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   405
    queue = mQueue()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   406
    stop_event = Event()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   407
    
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
   408
    # workaround for bug on using urllib2 and multiprocessing
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   409
    httpd = HTTPServer(('127.0.0.1',0), Requesthandler)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   410
    thread.start_new_thread(httpd.handle_request, ())
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   411
    
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   412
    req = urllib2.Request('http://localhost:%d' % httpd.server_port)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   413
    conn = None
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   414
    try:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   415
        conn = urllib2.urlopen(req)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   416
    except:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   417
        utils.get_logger().debug("could not open localhost")
883
8ae3d91ea4ae after update to requests 1.0.2, do some cleaning: remove tweetstream and tweepy
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 739
diff changeset
   418
        # donothing
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   419
    finally:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   420
        if conn is not None:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   421
            conn.close()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   422
    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   423
    process_engines = []
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   424
    logger_queues = []
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   425
    
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   426
    SessionProcess, engine_process, _ = get_sessionmaker(conn_str)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   427
    process_engines.append(engine_process)
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   428
    lqueue = mQueue(50)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   429
    logger_queues.append(lqueue)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   430
    pid = os.getpid()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   431
    sprocess = SourceProcess(SessionProcess, queue, options, access_token, stop_event, lqueue, pid)    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   432
    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   433
    tweet_processes = []
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   434
    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   435
    for i in range(options.process_nb - 1):
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   436
        SessionProcess, engine_process, _ = get_sessionmaker(conn_str)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   437
        process_engines.append(engine_process)
693
2ef837069108 Starting 'listener_update' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 528
diff changeset
   438
        lqueue = mQueue(50)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   439
        logger_queues.append(lqueue)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   440
        cprocess = TweetProcess(SessionProcess, queue, options, access_token, stop_event, lqueue, pid)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   441
        tweet_processes.append(cprocess)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   442
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   443
    log_thread = threading.Thread(target=process_log, name="loggingThread", args=(logger_queues, stop_event,))
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   444
    log_thread.daemon = True
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   445
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   446
    log_thread.start()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   447
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   448
    sprocess.start()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   449
    for cprocess in tweet_processes:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   450
        cprocess.start()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   451
289
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   452
    add_process_event("pid", {'main':os.getpid(), 'source':(sprocess.name, sprocess.pid), 'consumers':dict([(p.name, p.pid) for p in tweet_processes])}, session_maker)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   453
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   454
    if options.duration >= 0:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   455
        end_ts = datetime.datetime.utcnow() + datetime.timedelta(seconds=options.duration)    
739
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   456
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   457
    def interupt_handler(signum, frame):
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   458
        utils.get_logger().debug("shutdown asked " + repr(signum) + "  " + repr(inspect.getframeinfo(frame, 9)))
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   459
        stop_args.update({'message': 'interupt', 'signum':signum, 'frameinfo':inspect.getframeinfo(frame, 9)})
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   460
        stop_event.set()
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   461
        
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   462
    signal.signal(signal.SIGINT , interupt_handler)
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   463
    signal.signal(signal.SIGHUP , interupt_handler)
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   464
    signal.signal(signal.SIGALRM, interupt_handler)
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   465
    signal.signal(signal.SIGTERM, interupt_handler)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   466
    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   467
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   468
    while not stop_event.is_set():
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   469
        if options.duration >= 0 and  datetime.datetime.utcnow() >= end_ts:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   470
            stop_args.update({'message': 'duration', 'duration' : options.duration, 'end_ts' : end_ts})
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   471
            stop_event.set()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   472
            break
739
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   473
        if sprocess.is_alive():
350ffcb7ae4d correct listener.
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 738
diff changeset
   474
            utils.get_logger().debug("Source process alive")
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   475
            time.sleep(1)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   476
        else:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   477
            stop_args.update({'message': 'Source process killed'})
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   478
            stop_event.set()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   479
            break
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   480
    utils.get_logger().debug("Joining Source Process")
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   481
    try:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   482
        sprocess.join(10)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   483
    except:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   484
        utils.get_logger().debug("Pb joining Source Process - terminating")
890
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   485
    finally:
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   486
        sprocess.terminate()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   487
        
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   488
    for i, cprocess in enumerate(tweet_processes):
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   489
        utils.get_logger().debug("Joining consumer process Nb %d" % (i + 1))
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   490
        try:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   491
            cprocess.join(3)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   492
        except:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   493
            utils.get_logger().debug("Pb joining consumer process Nb %d - terminating" % (i + 1))
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   494
            cprocess.terminate()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   495
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   496
    
890
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   497
    utils.get_logger().debug("Close queues")
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   498
    try:
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   499
        queue.close()
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   500
        for lqueue in logger_queues:
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   501
            lqueue.close()
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   502
    except Exception as e:
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   503
        utils.get_logger().error("error when closing queues %s", repr(e))
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   504
        # do nothing
9c57883dbb9d Correct stopping process
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 888
diff changeset
   505
        
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   506
    
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   507
    if options.process_nb > 1:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   508
        utils.get_logger().debug("Processing leftovers")
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   509
        session = session_maker()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   510
        try:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   511
            process_leftovers(session, consumer_token, access_token, options.twitter_query_user, options.token_filename, options.ask_process_leftovers, utils.get_logger())
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   512
            session.commit()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   513
        finally:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   514
            session.rollback()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   515
            session.close()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   516
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   517
    for pengine in process_engines:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   518
        pengine.dispose()
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   519
    
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   520
    return stop_args
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   521
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   522
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   523
def main(options):
11
54d7f1486ac4 implement get_oauth_token
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 9
diff changeset
   524
    
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   525
    global conn_str
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   526
    
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   527
    conn_str = options.conn_str.strip()
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   528
    if not re.match("^\w+://.+", conn_str):
255
500cd0405c7a improve multi processing architecture
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 254
diff changeset
   529
        conn_str = 'sqlite:///' + options.conn_str
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   530
        
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   531
    if conn_str.startswith("sqlite") and options.new:
261
d84c4aa2a9eb add process event for start and shutdown
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 260
diff changeset
   532
        filepath = conn_str[conn_str.find(":///") + 4:]
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   533
        if os.path.exists(filepath):
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   534
            i = 1
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   535
            basename, extension = os.path.splitext(filepath)
243
9213a63fa34a - debug multithread (still database lock problem)
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 242
diff changeset
   536
            new_path = '%s.%d%s' % (basename, i, extension)
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   537
            while i < 1000000 and os.path.exists(new_path):
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   538
                i += 1
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   539
                new_path = '%s.%d%s' % (basename, i, extension)
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   540
            if i >= 1000000:
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   541
                raise Exception("Unable to find new filename for " + filepath)
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   542
            else:
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   543
                shutil.move(filepath, new_path)
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   544
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   545
    Session, engine, metadata = get_sessionmaker(conn_str)
9
bb44692e09ee script apres traitement enmi
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff changeset
   546
    
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   547
    if options.new:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   548
        check_metadata = sqlalchemy.schema.MetaData(bind=engine)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   549
        check_metadata.reflect()
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   550
        if len(check_metadata.sorted_tables) > 0:
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   551
            message = "Database %s not empty exiting" % conn_str
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   552
            utils.get_logger().error(message)
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   553
            sys.exit(message)
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   554
    
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   555
    metadata.create_all(engine)
289
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   556
    session = Session()
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   557
    try:
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   558
        models.add_model_version(session)
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   559
    finally:
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   560
        session.close()
a5eff8f2b81d improve session maker creation + models version + add model version in db
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 272
diff changeset
   561
    
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   562
    stop_args = {}
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   563
    try:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   564
        add_process_event(event_type="start", args={'options':options.__dict__, 'args': [], 'command_line': sys.argv}, session_maker=Session)
263
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   565
        stop_args = do_run(options, Session)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   566
    except Exception as e:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   567
        utils.get_logger().exception("Error in main thread")        
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   568
        outfile = StringIO.StringIO()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   569
        try:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   570
            traceback.print_exc(file=outfile)
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   571
            stop_args = {'error': repr(e), 'message': getattr(e, 'message', ''), 'stacktrace':outfile.getvalue()}
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   572
        finally:
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   573
            outfile.close()
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   574
        raise
6671e9a4c9c5 correct model ans improve event tracking
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 261
diff changeset
   575
    finally:    
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   576
        add_process_event(event_type="shutdown", args=stop_args, session_maker=Session)
242
cdd7d3c0549c Starting 'parallel_twitter' branch
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 207
diff changeset
   577
425
b346fd32fc34 prepare for publication, add sync info
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 290
diff changeset
   578
    utils.get_logger().debug("Done. Exiting. " + repr(stop_args))
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   579
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   580
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   581
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   582
if __name__ == '__main__':
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   583
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   584
    options = get_options()
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   585
    
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   586
    loggers = set_logging(options)
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   587
    
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   588
    utils.get_logger().debug("OPTIONS : " + repr(options))
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   589
    
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   590
    if options.daemon:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   591
        options.ask_process_leftovers = False
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   592
        import daemon
254
2209e66bb50b multiple debugging and corrections
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 243
diff changeset
   593
        
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   594
        hdlr_preserve = []
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   595
        for logger in loggers:
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   596
            hdlr_preserve.extend([h.stream for h in logger.handlers])
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   597
            
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   598
        context = daemon.DaemonContext(working_directory=os.getcwd(), files_preserve=hdlr_preserve) 
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   599
        with context:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   600
            main(options)
272
fe2efe3600ea add daemon option
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 263
diff changeset
   601
    else:
888
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   602
        main(options)
6fc6637d8403 update listener. add support for twitter regulation messages. update virtualenv
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents: 886
diff changeset
   603