Ejemplo n.º 1
0
from tornado.options import define, options, parse_command_line
import tornado.options
import tornado.web
from tornado import websocket

import json
from Constants import *
import Db
import AndroidUtils
import MasterServerUtils
import logging
import HelperFunctions
import Config
import ProgressiveQuizHandler

dbUtils = Db.DbUtils(Config.dbServer)  #initialize Db
masterSever = MasterServerUtils.MasterServerUtils(Config.WebServersMap,
                                                  Config.ExternalWebServersMap)

logging.basicConfig(filename='log', level=logging.INFO)

gcmQueue = []
userGcmMessageQueue = []
GCM_BATCH_COUNT = 10


def sendGcmMessages():
    while (len(userGcmMessageQueue) > 0):
        uids, packetData = userGcmMessageQueue.pop()
        registrationIds = None
        if (isinstance(uids, list)):
Ejemplo n.º 2
0
def main():

    global dbUtils
    global routerServer
    global logger
    global HTTP_PORT

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--port",
                        help="display a square of a given number",
                        type=int,
                        required=True)

    parser.add_argument("--isFirstInit",
                        help="display a square of a given number",
                        type=bool)

    parser.add_argument("--gcmServerAuth",
                        help="gcm key for push notifications",
                        type=str)

    parser.add_argument("--serverId", help="serverId", type=str, required=True)

    parser.add_argument("--serverAddr",
                        help="external ip address ",
                        type=str,
                        required=True)

    parser.add_argument(
        "--serverGroup",
        help="unique to identify group , like main , development-1 etc",
        type=str)

    args = parser.parse_args()

    Config.serverGroup = args.serverGroup if args.serverGroup else Config.serverGroup
    Config.serverId = args.serverId

    Utils.logger = logger = create_timed_rotating_log('quizapp_logs/quizapp' +
                                                      "_" + Config.serverId +
                                                      '.log')

    logger.info("PROCESS_PID: " + str(os.getpid()))
    logger.info("initializing dbUtils..")
    Utils.dbUtils = dbUtils = Db.DbUtils(Config.dbServer)  #initialize Db

    #     if(not args.serverAddr.endswith(str(args.port))):
    #         print "Serveradd should end with port, continue only if you have configured domain-name:port to your serving host"
    if (not args.serverAddr.startswith("http")):
        print "Serveraddr should shart with http or https"
        return

    if (dbUtils.isServerIdExists(Config.serverId, Config.serverGroup)):
        print "there is already a server entry with the same serverId %s in this group %s clear , if there is no such such server running you can continue" % (
            Config.serverId, Config.serverGroup)
        if (raw_input("y/n : ").lower() == "n"):
            return

    dbUtils.updateServerMap({Config.serverId: args.serverAddr},
                            Config.serverGroup)
    ##generate a random key and send an email to help manage
    dbUtils.addSecretKey(HelperFunctions.generateKey(10))

    logger.info("initialing router utilities")
    Utils.routerServer = routerServer = RouterServerUtils.RouterServerUtils(
        dbUtils)
    HTTP_PORT = args.port
    if (args.isFirstInit):
        from CreateBots import createBots
        bots = createBots(dbUtils, Db.UserWinsLosses)
        logger.info("creating bots..")
        print bots
        dbUtils.loadBotUids()

        if (not args.gcmServerAuth):
            print "You must supply a  gcm key on first init"
            return

    if (args.gcmServerAuth):
        dbUtils.config("gcmauth", args.gcmServerAuth)

    reloadGcmConfig()

    http_server = tornado.httpserver.HTTPServer(QuizApp())
    http_server.listen(HTTP_PORT)
    ## this should be moved to seperate queuing service
    tornado.ioloop.PeriodicCallback(sendGcmMessages, 2000).start()
    tornado.ioloop.IOLoop.instance().start()