Пример #1
0
    def get(self):
        self.name = self._check_argument('name', expect_types=(str, unicode))

        urlist = ['http://www.example.com', 'http://www.google.com']

        try:
            for url in urlist:
                request = tornado.httpclient.HTTPRequest(url,
                                                         method='GET',
                                                         connect_timeout=1,
                                                         request_timeout=5,
                                                         user_agent='TNS-SPIDER',
                                                         )
                http_client = AsyncHTTPClient()

                response = yield gen.Task(http_client.fetch, request)
                result = self.__handle_async_request(response)
                self.finish(result)
                break
            else:
                self.finish({'e_code':ECODE.HTTP, 'e_msg': 'SUCCESS'})
            pass
        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            self.api_response({'e_code':ECODE.HTTP, 'e_msg': '%s' % e})
            raise StopIteration
Пример #2
0
    def get(self):
        self.name = self._check_argument('name', expect_types=(str, unicode))

        urlist = ['http://www.example.com', 'http://www.google.com']

        try:
            for url in urlist:
                request = tornado.httpclient.HTTPRequest(
                    url,
                    method='GET',
                    connect_timeout=1,
                    request_timeout=5,
                    user_agent='TNS-SPIDER',
                )
                http_client = AsyncHTTPClient()

                response = yield gen.Task(http_client.fetch, request)
                result = self.__handle_async_request(response)
                self.finish(result)
                break
            else:
                self.finish({'e_code': ECODE.HTTP, 'e_msg': 'SUCCESS'})
            pass
        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            self.api_response({'e_code': ECODE.HTTP, 'e_msg': '%s' % e})
            raise StopIteration
Пример #3
0
def main():
    ''' main function
    '''
    # 忽略Broken Pipe信号
    signal.signal(signal.SIGPIPE, signal.SIG_IGN)

    # 处理kill信号
    signal.signal(signal.SIGINT, handle_signal_kill)
    signal.signal(signal.SIGQUIT, handle_signal_kill)
    signal.signal(signal.SIGTERM, handle_signal_kill)
    signal.signal(signal.SIGHUP, handle_signal_kill)

    g_logger.info('START TORNADO WEB SERVER ...')

    for key, option in options.iteritems():
        g_logger.info('Options: (%s, %s)', key, option.value())

    try:
        if sys.version_info[:3] >= (2, 5, 2):
            #pycurl minimum supported version is 7.18.2
            tornado.httpclient.AsyncHTTPClient.configure(
                "tornado.curl_httpclient.CurlAsyncHTTPClient")
            pass

        sockets_list = []
        for bind_ip in options.bind_ip.split(','):
            sockets = tornado.netutil.bind_sockets(options.port,
                                                   address=bind_ip,
                                                   backlog=128)
            sockets_list.append(sockets)
        #tornado.process.fork_processes(0)

        global g_scheduler

        g_scheduler = \
            tornado.ioloop.PeriodicCallback(update_global_data,
                    options.scheduler_interval * 1000)
        g_scheduler.start()

        http_server =  \
            tornado.httpserver.HTTPServer(xheaders=True, request_callback=TApplication())
        for sockets in sockets_list:
            http_server.add_sockets(sockets)

        tornado.ioloop.IOLoop.instance().start()

        http_server.stop()
        tornado.ioloop.IOLoop.instance().close()

        g_logger.info('STOP TORNADO WEB SERVER ...')
    except socket.error as e:
        g_logger.warning('Socket Error: %s', e, exc_info=True)
    except KeyboardInterrupt as e:
        g_logger.warning('Gently Quit')
    except Exception as e:
        g_logger.error('UnCaught Exception: %s', e, exc_info=True)
Пример #4
0
    def get(self):
        try:
            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name', expect_types=(str, unicode))

            self.api_response({'e_code': ECODE.SUCCESS, 'e_msg': u'Hello, %s!' %
                    self.name})

            self.async_fetch()

        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code':ECODE.HTTP, 'e_msg': '%s' % e})
Пример #5
0
    def get(self):
        if __debug__:
            g_logger.debug(self.request.body)

        result = {'code': ECODE.SUCCESS, 'msg': EMSG.SUCCESS}
        result['data'] = {}

        try:
            result['data'] = self.application.stat_info
        except Exception, e:
            g_logger.error(e, exc_info=True if __debug__ else False)
            result['code'] = ECODE.DEFAULT
            result['msg'] = EMSG.DEFAULT
Пример #6
0
    def get(self):
        if __debug__:
            g_logger.debug(self.request.body)

        result = {'code': ECODE.SUCCESS, 'msg': EMSG.SUCCESS}
        result['data'] = {}

        try:
            result['data'] = self.application.stat_info
        except Exception, e:
            g_logger.error(e, exc_info=True if __debug__ else False)
            result['code'] = ECODE.DEFAULT
            result['msg']  = EMSG.DEFAULT
Пример #7
0
    def get(self):
        try:
            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name', expect_types=(str, unicode))

            self.api_response({'e_code': ECODE.SUCCESS, 'e_msg': u'Hello, %s!' %
                    self.name})

            self.async_fetch()

        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code':ECODE.HTTP, 'e_msg': '%s' % e})
Пример #8
0
    def get(self):
        try:
            HttpUtil.validate_ip(self.request)

            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument("name", expect_types=(str, unicode))

            if self.name == "bufferx":
                self.api_response({"e_code": ECODE.SUCCESS, "e_msg": u"Hello, %s!" % self.name})
            else:
                pass

        except HTTPError, e:
            g_logger.error(e)
            return self.api_response({"e_code": ECODE.HTTP, "e_msg": "%s" % e})
Пример #9
0
    def get(self):
        try:
            result = {}
            result['e_code'] = ECODE.SUCCESS
            result['e_msg'] = 'SUCCESS'

            pop_result = self.queue.pop()
            result['data'] = pop_result['data']
            result['wait_time'] = pop_result['wait_time']

            self.api_response(result)
        except BaseError, e:
            g_logger.error(e, ext_info=True)
            return self.api_response({'e_code':e.e_code, 'e_msg': '%s' %
                    e, 'data': {}})
Пример #10
0
class HelloHandler(BaseHandler):
    @tornado.web.asynchronous
    def post(self):
        self.get()

    @tornado.web.asynchronous
    def get(self):
        try:
            HttpUtil.validate_ip(self.request)

            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name',
                                             expect_types=(str, unicode))

            if self.name == 'bufferx':
                self.api_response({
                    'e_code': ECODE.SUCCESS,
                    'e_msg': u'Hello, %s!' % self.name
                })
            else:
                pass

        except HTTPError, e:
            g_logger.error(e)
            return self.api_response({'e_code': ECODE.HTTP, 'e_msg': '%s' % e})
        except BaseError, e:
            g_logger.error(e)
            return self.api_response({'e_code': e.e_code, 'e_msg': '%s' % e})
Пример #11
0
    def get(self):
        try:
            HttpUtil.validate_ip(self.request)

            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name',
                                             expect_types=(str, unicode))

            if self.name == 'bufferx':
                self.api_response({
                    'e_code': ECODE.SUCCESS,
                    'e_msg': u'Hello, %s!' % self.name
                })
            else:
                pass

        except HTTPError, e:
            g_logger.error(e)
            return self.api_response({'e_code': ECODE.HTTP, 'e_msg': '%s' % e})
Пример #12
0
def main():
    ''' main function
    '''
    init_options()
    init_logger()

    # 忽略Broken Pipe信号
    signal.signal(signal.SIGPIPE, signal.SIG_IGN)

    # 处理kill信号
    signal.signal(signal.SIGINT, handle_signal_kill)
    signal.signal(signal.SIGQUIT, handle_signal_kill)
    signal.signal(signal.SIGTERM, handle_signal_kill)
    signal.signal(signal.SIGHUP, handle_signal_kill)

    g_logger.info('START TORNADO SERVER ...')

    for key, option in options.iteritems():
        g_logger.info('Options: (%s, %s)', key, option.value())

    try:
        if sys.version_info[:3] >= (2, 5, 2):
            #pycurl minimum supported version is 7.18.2
            AsyncHTTPClient.configure(
                "tornado.curl_httpclient.CurlAsyncHTTPClient")
            pass

        HTTPServer.instance().start()
        tornado.ioloop.IOLoop.instance().start()

        HTTPServer.instance().stop()
        tornado.ioloop.IOLoop.instance().close(all_fds=True)

        g_logger.info('STOP TORNADO SERVER ...')
    except socket.error as e:
        g_logger.warning('Socket Error: %s', e, exc_info=True)
    except KeyboardInterrupt as e:
        g_logger.warning('Gently Quit')
    except Exception as e:
        g_logger.error('UnCaught Exception: %s', e, exc_info=True)
Пример #13
0
def main():
    ''' main function
    '''
    init_options()
    init_logger()

    # 忽略Broken Pipe信号
    signal.signal(signal.SIGPIPE, signal.SIG_IGN);
                        
    # 处理kill信号
    signal.signal(signal.SIGINT, handle_signal_kill)
    signal.signal(signal.SIGQUIT, handle_signal_kill)
    signal.signal(signal.SIGTERM, handle_signal_kill)
    signal.signal(signal.SIGHUP, handle_signal_kill)

    g_logger.info('START TORNADO SERVER ...')

    for key, option in options.iteritems():
        g_logger.info('Options: (%s, %s)', key, option.value())

    try:
        if sys.version_info[:3] >= (2, 5, 2):
            #pycurl minimum supported version is 7.18.2
            AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient")
            pass

        HTTPServer.instance().start()
        tornado.ioloop.IOLoop.instance().start()

        HTTPServer.instance().stop()
        tornado.ioloop.IOLoop.instance().close(all_fds=True)

        g_logger.info('STOP TORNADO SERVER ...')
    except socket.error as e:
        g_logger.warning('Socket Error: %s', e, exc_info=True)
    except KeyboardInterrupt as e:
        g_logger.warning('Gently Quit')
    except Exception as e:
        g_logger.error('UnCaught Exception: %s', e, exc_info=True)
Пример #14
0
    def post(self):
        try:
            if not self.request.body:
                return self.api_response({'e_code': ECODE.Q_ERROR, 'e_msg':
                    EMSG.Q_ERROR})

            json_obj = tornado.escape.json_decode(self.request.body)
            g_logger.info(json_obj)

            if not isinstance(json_obj, dict):
                return self.api_response({'e_code': ECODE.Q_TYPE_ERROR, 'e_msg':
                    EMSG.Q_TYPE_ERROR})

            for k, v in json_obj.iteritems():
                result = self.queue.push({'k': k, 'v': v})
                if ECODE.Q_FULL == result:
                    break
                pass

            self.api_response({'e_code':ECODE.SUCCESS, 'e_msg': 'SUCCESS'})
        except HTTPError, e:
            g_logger.error(e)
            return self.api_response({'e_code':ECODE.HTTP, 'e_msg': '%s' % e})
Пример #15
0
class AsyncReadHandler(BaseHandler):
    @property
    def db(self):
        if __debug__:
            g_logger.debug('call property::db')
        return self.application.db

    @tornado.web.asynchronous
    def post(self):
        self.get()

    @util_decorator.validate_ip(_logger=g_logger)
    @tornado.web.asynchronous
    @gen.engine
    def get(self):
        self.name = self._check_argument('name', expect_types=(str, unicode))

        urlist = ['http://www.example.com', 'http://www.google.com']

        try:
            for url in urlist:
                request = tornado.httpclient.HTTPRequest(
                    url,
                    method='GET',
                    connect_timeout=1,
                    request_timeout=5,
                    user_agent='TWORK-SPIDER',
                )
                http_client = AsyncHTTPClient()

                response = yield gen.Task(http_client.fetch, request)
                result = self.__handle_async_request(response)
                self.finish(result)
                break
            else:
                self.finish({'e_code': ECODE.HTTP, 'e_msg': 'SUCCESS'})
            pass
        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            self.api_response({'e_code': ECODE.HTTP, 'e_msg': '%s' % e})
            raise StopIteration
        except BaseError, e:
            g_logger.error(e, exc_info=True)
            self.api_response({'e_code': e.e_code, 'e_msg': '%s' % e})
            raise StopIteration
Пример #16
0
class HelloHandler(BaseHandler):

    @util_decorator.time_it(g_logger)
    @tornado.web.asynchronous
    def get(self):
        try:
            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name', expect_types=(str, unicode))

            self.api_response({'e_code': ECODE.SUCCESS, 'e_msg': u'Hello, %s!' %
                    self.name})

            self.async_fetch()

        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code':ECODE.HTTP, 'e_msg': '%s' % e})
        except BaseError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code':e.e_code, 'e_msg': '%s' % e})
Пример #17
0
class QueuePushHandler(BaseHandler):
    @property
    def queue(self):
        return self.application.queue

    @tornado.web.asynchronous
    def get(self):
        self.post()

    @tornado.web.asynchronous
    @util_decorator.validate_ip(g_logger)
    def post(self):
        try:
            if not self.request.body:
                return self.api_response({'e_code': ECODE.Q_ERROR, 'e_msg':
                    EMSG.Q_ERROR})

            json_obj = tornado.escape.json_decode(self.request.body)
            g_logger.info(json_obj)

            if not isinstance(json_obj, dict):
                return self.api_response({'e_code': ECODE.Q_TYPE_ERROR, 'e_msg':
                    EMSG.Q_TYPE_ERROR})

            for k, v in json_obj.iteritems():
                result = self.queue.push({'k': k, 'v': v})
                if ECODE.Q_FULL == result:
                    break
                pass

            self.api_response({'e_code':ECODE.SUCCESS, 'e_msg': 'SUCCESS'})
        except HTTPError, e:
            g_logger.error(e)
            return self.api_response({'e_code':ECODE.HTTP, 'e_msg': '%s' % e})
        except ValueError, e:
            g_logger.error(e)
            return self.api_response({'e_code': ECODE.Q_TYPE_ERROR, 'e_msg':
                EMSG.Q_TYPE_ERROR})
Пример #18
0
class HelloHandler(BaseHandler):
    @property
    def db(self):
        if __debug__:
            g_logger.debug('call property::db')
        return self.application.db

    @tornado.web.asynchronous
    def post(self):
        self.get()

    @util_decorator.time_it(g_logger)
    @tornado.web.asynchronous
    def get(self):
        try:
            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name',
                                             expect_types=(str, unicode))

            self.api_response({
                'e_code': ECODE.SUCCESS,
                'e_msg': u'Hello, %s!' % self.name
            })

            if __debug__:
                g_logger.debug(self.db)
                g_logger.debug(self._db)

            self.async_fetch()

        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code': ECODE.HTTP, 'e_msg': '%s' % e})
        except BaseError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code': e.e_code, 'e_msg': '%s' % e})
Пример #19
0
            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name', expect_types=(str, unicode))

            self.api_response({'e_code': ECODE.SUCCESS, 'e_msg': u'Hello, %s!' %
                    self.name})

            self.async_fetch()

        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code':ECODE.HTTP, 'e_msg': '%s' % e})
        except BaseError, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code':e.e_code, 'e_msg': '%s' % e})
        except Exception, e:
            g_logger.error(e, exc_info=True)
            return self.api_response({'e_code':ECODE.DEFAULT, 'e_msg':
                'Unknown'})

    def async_fetch(self):
        request = tornado.httpclient.HTTPRequest(url='http://www.facebook.com',
                                                 method='GET',
                                                 connect_timeout=1,
                                                 request_timeout=5,
                                                 user_agent='TNS-SPIDER',
                                                 )
        http_client = AsyncHTTPClient()
        http_client.fetch(request, self.__handle_async_request)

    def __handle_async_request(self, response):
        g_logger.debug('CURL_ERRNO\t%d', response.error.errno)
Пример #20
0
 def get(self):
     try:
         return self.api_response(self.queue.status())
     except BaseError, e:
         g_logger.error(e)
         return self.api_response({'e_code':e.e_code, 'e_msg': '%s' % e})
Пример #21
0
from domain.object.error import BaseError


class HelloHandler(BaseHandler):
    @tornado.web.asynchronous
    def post(self):
        self.get()

    @tornado.web.asynchronous
    def get(self):
        try:
            HttpUtil.validate_ip(self.request)

            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument("name", expect_types=(str, unicode))

            if self.name == "bufferx":
                self.api_response({"e_code": ECODE.SUCCESS, "e_msg": u"Hello, %s!" % self.name})
            else:
                pass

        except HTTPError, e:
            g_logger.error(e)
            return self.api_response({"e_code": ECODE.HTTP, "e_msg": "%s" % e})
        except BaseError, e:
            g_logger.error(e)
            return self.api_response({"e_code": e.e_code, "e_msg": "%s" % e})
        except Exception, e:
            g_logger.error(e)
            return self.api_response({"e_code": ECODE.DEFAULT, "e_msg": "Unknown"})
Пример #22
0
 def get(self):
     try:
         return self.api_response(self.queue.status())
     except BaseError, e:
         g_logger.error(e)
         return self.api_response({'e_code': e.e_code, 'e_msg': '%s' % e})
Пример #23
0
                        
    # 处理kill信号
    signal.signal(signal.SIGINT, handle_signal_kill)
    signal.signal(signal.SIGQUIT, handle_signal_kill)
    signal.signal(signal.SIGTERM, handle_signal_kill)
    signal.signal(signal.SIGHUP, handle_signal_kill)

    g_logger.info('START TORNADO WEB SERVER ...')

    for key, option in options.iteritems():
        g_logger.info('Options: (%s, %s)', key, option.value())

    try:
        http_server =  \
            tornado.httpserver.HTTPServer(request_callback=TApplication())
        http_server.listen(options.port)

        tornado.ioloop.IOLoop.instance().start()

        g_logger.info('STOP TORNADO WEB SERVER ...')
    except socket.error, e:
        g_logger.warning('Socket Error: %s' % str(e))
    except KeyboardInterrupt, e:
        g_logger.warning('Gently Quit')
    except Exception, msg:
        g_logger.error('UnCaught Exception: %s' % msg)
        raise 

if __name__ == '__main__':
    main()
Пример #24
0
                http_client = AsyncHTTPClient()

                response = yield gen.Task(http_client.fetch, request)
                result = self.__handle_async_request(response)
                self.finish(result)
                break
            else:
                self.finish({'e_code': ECODE.HTTP, 'e_msg': 'SUCCESS'})
            pass
        except HTTPError, e:
            g_logger.error(e, exc_info=True)
            self.api_response({'e_code': ECODE.HTTP, 'e_msg': '%s' % e})
            raise StopIteration
        except BaseError, e:
            g_logger.error(e, exc_info=True)
            self.api_response({'e_code': e.e_code, 'e_msg': '%s' % e})
            raise StopIteration
        except Exception, e:
            g_logger.error(e, exc_info=True)
            self.api_response({'e_code': e.e_code, 'e_msg': '%s' % e})
            raise StopIteration

    def __handle_async_request(self, response):
        if response is None:
            return None
        #g_logger.debug('STACK_CONTEXT\tself.name=%s' % self.name)
        g_logger.debug('RESPONSE_ERROR\t%s' % response.error)
        g_logger.debug('RESPONSE\t%s' % response)

        return response.body
Пример #25
0
    # 处理kill信号
    signal.signal(signal.SIGINT, handle_signal_kill)
    signal.signal(signal.SIGQUIT, handle_signal_kill)
    signal.signal(signal.SIGTERM, handle_signal_kill)
    signal.signal(signal.SIGHUP, handle_signal_kill)

    g_logger.info('START TORNADO WEB SERVER ...')

    for key, option in options.iteritems():
        g_logger.info('Options: (%s, %s)', key, option.value())

    try:
        http_server =  \
            tornado.httpserver.HTTPServer(request_callback=TApplication())
        http_server.listen(options.port)

        tornado.ioloop.IOLoop.instance().start()

        g_logger.info('STOP TORNADO WEB SERVER ...')
    except socket.error, e:
        g_logger.warning('Socket Error: %s' % str(e))
    except KeyboardInterrupt, e:
        g_logger.warning('Gently Quit')
    except Exception, msg:
        g_logger.error('UnCaught Exception: %s' % msg)
        raise


if __name__ == '__main__':
    main()
Пример #26
0
    @tornado.web.asynchronous
    def get(self):
        try:
            HttpUtil.validate_ip(self.request)

            # 只检查参数,不作业务逻辑处理
            self.name = self._check_argument('name',
                                             expect_types=(str, unicode))

            if self.name == 'bufferx':
                self.api_response({
                    'e_code': ECODE.SUCCESS,
                    'e_msg': u'Hello, %s!' % self.name
                })
            else:
                pass

        except HTTPError, e:
            g_logger.error(e)
            return self.api_response({'e_code': ECODE.HTTP, 'e_msg': '%s' % e})
        except BaseError, e:
            g_logger.error(e)
            return self.api_response({'e_code': e.e_code, 'e_msg': '%s' % e})
        except Exception, e:
            g_logger.error(e)
            return self.api_response({
                'e_code': ECODE.DEFAULT,
                'e_msg': 'Unknown'
            })