コード例 #1
0
ファイル: application.py プロジェクト: leopallas/appstack
def main():
	tornado.options.parse_command_line()
	# settings
	if options.settings:
		tornado.options.parse_config_file(options.settings)
	else:
		tornado.options.parse_config_file(os.path.join(APPSDIR, 'settings', '__init__.py'))
	# i18n translations
	# tornado.locale.load_translations(settings.TRANSLATIONDIR) 
	# tornado.locale.get_supported_locales()
	# tornado.locale.set_supported_locales("en_US")

	# httpserver
	httpserver = tornado.httpserver.HTTPServer(Application(), xheaders=True)
	httpserver.bind(options.port, "127.0.0.1")
	httpserver.start(options.processor or int(1))

	# WARNING: this timestamp must equal to supervisord.readear.conf stopwaitsecs = 10
	# WARNING: if not or less, the server will be killed by supervisord before max_wait_seconds_before_shutdown
	if options.debug:
		MAX_WAIT_SECONDS_BEFORE_SHUTDOWN = 0
	else:
		MAX_WAIT_SECONDS_BEFORE_SHUTDOWN = 10

	# signal handler
	def sig_handler(sig, frame):
		logging.warning("Catching Signal: %s", sig)
		tornado.ioloop.IOLoop.instance().add_callback(shutdown)

	# signal handler's callback
	def shutdown():
		logging.info("Stopping HttpServer...")
		httpserver.stop() # No longer accept new http traffic

		logging.info("IOLoop Will be Terminate in %s Seconds...", 
			MAX_WAIT_SECONDS_BEFORE_SHUTDOWN)
		instance = tornado.ioloop.IOLoop.instance()

		deadline = time.time() + MAX_WAIT_SECONDS_BEFORE_SHUTDOWN

		# recursion for terminate IOLoop.instance()
		def terminate():
			now = time.time()
			if now < deadline and (instance._callbacks or instance._timeouts):
				instance.add_timeout(now + 1, terminate)
			else:
				instance.stop() # After process all _callbacks and _timeouts, break IOLoop.instance()
				logging.info('Shutdown...')
		# process recursion
		terminate()

	# signal register
	signal.signal(signal.SIGINT, sig_handler)
	signal.signal(signal.SIGTERM, sig_handler)

	# start ioloop for socket, infinite before catch signal
	tornado.ioloop.IOLoop.instance().start()
	logging.info("Exit...")
コード例 #2
0
def run_forever(application, port=None, num_processes=1):
    """run server
    port='8888'
    port='8801, 8802, 8803'
    """

    logger = logging.getLogger('appserver')

    if sys.platform == 'win32':
        title = 'Tornado'
        from .win32 import set_windows_console_title, set_windows_console_size
        set_windows_console_title(title)
        set_windows_console_size(120, 24)

    ports = []
    if port:
        if isinstance(port, str):
            ports.extends(re.split('[,;\s]+', port))
        elif isinstance(port, Mapping):
            for p in port:
                ports.append(p)
        elif isinstance(port, int):
            ports.append(port)

    if not ports:
        ports.append(8888)

    application.setup()

    if num_processes <= 0:
        import multiprocessing
        num_processes = multiprocessing.cpu_count()

    if application.settings.get('debug', False) and num_processes != 1:
        num_processes = 1
        logger.warn('In debug mode, it should be in single process mode')

    httpserver = tornado.httpserver.HTTPServer(application)
    for port in ports:
        httpserver.bind(port)
    httpserver.start(num_processes)

    ioloop = tornado.ioloop.IOLoop.instance()

    def sigint_int(s, f):
        logger.info('server is shutting')
        ioloop.add_callback(ioloop.stop)

    signal.signal(signal.SIGINT, sigint_int)

    print('Server Started. Press <CRTL-C> to kill server')
    ioloop.start()  # 启动服务器
    logger.info('server stopped')
コード例 #3
0
ファイル: server.py プロジェクト: brandonDu/domainics
def run_forever(application, port=None, num_processes=1) :
    """run server
    port='8888'
    port='8801, 8802, 8803'
    """

    logger = logging.getLogger('appserver')

    if sys.platform == 'win32' :
        title = 'Tornado'
        from .win32 import set_windows_console_title, set_windows_console_size
        set_windows_console_title(title)
        set_windows_console_size(120, 24)

    ports = []
    if port:
        if isinstance(port, str):
            ports.extends(re.split('[,;\s]+', port))
        elif isinstance(port, Mapping):
            for p in port:
                ports.append(p)
        elif isinstance(port, int):
            ports.append(port)

    if not ports:
        ports.append(8888)

    application.setup()

    if num_processes <= 0:
        import multiprocessing
        num_processes = multiprocessing.cpu_count()

    if application.settings.get('debug', False) and num_processes != 1:
        num_processes = 1
        logger.warn('In debug mode, it should be in single process mode')

    httpserver = tornado.httpserver.HTTPServer(application)
    for port in ports:
        httpserver.bind(port)
    httpserver.start(num_processes)

    ioloop = tornado.ioloop.IOLoop.instance()
    def sigint_int(s, f):
        logger.info('server is shutting')
        ioloop.add_callback(ioloop.stop)

    signal.signal(signal.SIGINT, sigint_int)

    print('Server Started. Press <CRTL-C> to kill server')
    ioloop.start() # 启动服务器
    logger.info('server stopped')
コード例 #4
0
import tornado.httpserver
import tornado.ioloop
import config
from application import Application

if __name__ == '__main__':
    app = Application()

    httpserver = tornado.httpserver.HTTPServer(app)

    httpserver.bind(config.options["port"])
    httpserver.start(1)
    tornado.ioloop.IOLoop.current().start()
コード例 #5
0
ファイル: tornado_test.py プロジェクト: lth850230720/chatRoom
import tornado
import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options
from application import Application
from db import sqlite_tornado
if __name__ == '__main__':
    app = Application()
    httpserver = tornado.httpserver.HTTPServer(app)
    httpserver.bind(8080)
    sqlite_tornado.db_init()
    httpserver.start()
    tornado.ioloop.IOLoop.instance().start()
コード例 #6
0
                        </form>\
                    </body>\
                    </html>')
        #write里面内容是一个简单的完整页面,为了博客方便,放在了一起,建议分开
    def post(self, *args, **kwargs):
        #查看上传文件的完整格式,files以字典形式返回
        #print(self.request.files)
        #{'file1':
        #[{'filename': '新建文本文档.txt', 'body': b'61 60 -83\r\n-445 64 -259', 'content_type': 'text/plain'}],
        #'file2':
        filesDict = self.request.files
        for inputname in filesDict:
            #第一层循环取出最外层信息,即input标签传回的name值
            #用过filename键值对对应,取出对应的上传文件的真实属性
            http_file = filesDict[inputname]
            for fileObj in http_file:
                #第二层循环取出完整的对象
                #取得当前路径下的upfiles文件夹+上fileObj.filename属性(即真实文件名)
                filePath = os.path.join(os.path.dirname(__file__),
                                        fileObj.filename)
                with open(filePath, 'wb') as f:
                    f.write(fileObj.body)
        self.write('上传成功')


if __name__ == '__main__':
    app = tornado.web.Application([(r'/fileup', UpFileHandler)])
    httpserver = tornado.httpserver.HTTPServer(app)
    httpserver.bind(9000)
    httpserver.start()
    tornado.ioloop.IOLoop.instance().start()
コード例 #7
0
ファイル: server.py プロジェクト: CNzhou97/PycharmProjects
import tornado.ioloop
import tornado.httpserver
import config
from application import Application

if __name__ == '__main__':

    app = Application()
    print(__file__)
    httpserver = tornado.httpserver.HTTPServer(app)
    httpserver.bind(config.options.get("port"))
    #httpserver.bind(8888)
    httpserver.start()  # 默认是创建和cpu的核心数个数一致的子进程
    #IOLoop IO循环的类:内部继承了epoll实现高并发
    tornado.ioloop.IOLoop.current().start()
コード例 #8
0
import tornado.web
import tornado.ioloop
import tornado.httpserver


class IndexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write("hello customer server.")


if __name__ == '__main__':
    app = tornado.web.Application([
        (r"/", IndexHandler)
    ])

    httpserver =tornado.httpserver.HTTPServer(app)
    # httpserver.listen(8000)
    httpserver.bind(8000)
    httpserver.start(1)
    tornado.ioloop.IOLoop.current().start()
コード例 #9
0
from tornado import web
from tornado import httpserver
import tornado.ioloop
from tornado import options
import config


# 类似与Django中的类试图一样  通过方法进行匹配
class IndexHandler(web.RequestHandler):
    def get(self,*args,**kwargs):
        self.write('this is for test!')


#  路由
app = web.Application([
    (r'/',IndexHandler)
])


if __name__ == "__main__":
    httpserver = httpserver.HTTPServer(app)
    # 使用变量的值
    print(config.options['list'])
    httpserver.bind(config.options['port'])
    httpserver.start(1)
    tornado.ioloop.IOLoop.current().start()
コード例 #10
0
import tornado.web
import tornado.ioloop
import tornado.httpserver
import config


class indexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write("hi,tornado")


if __name__ == '__main__':

    print(config.options['list'])
    app = tornado.web.Application([(r"/", indexHandler)])

    httpserver = tornado.httpserver.HTTPServer(app)
    httpserver.bind(port=config.options['port'],
                    address=config.options['address'])
    httpserver.start(1)

    tornado.ioloop.IOLoop.current().start()
コード例 #11
0
from tornado import httpserver
import tornado.ioloop
from tornado import options


options.define('port',default=8000,type=int)
options.define('list',default=[],type=str,multiple=True)


# 类似与Django中的类试图一样  通过方法进行匹配
class IndexHandler(web.RequestHandler):
    def get(self,*args,**kwargs):
        self.write('this is for test!')


#  路由
app = web.Application([
    (r'/',IndexHandler)
])


if __name__ == "__main__":
    # 在终端上获取参数的方法:将命令行中的参数进行转换保存到 
    # tornado.options.options
    options.parse_command_line()
    httpserver = httpserver.HTTPServer(app)
    # 使用变量的值
    print(options.options.list)
    httpserver.bind(options.options.port)
    httpserver.start(1)
    tornado.ioloop.IOLoop.current().start()
コード例 #12
0
def main():
    tornado.options.parse_command_line()
    httpserver = tornado.httpserver.HTTPServer(Application())
    httpserver.bind(options.port)
    httpserver.start(1)
    tornado.ioloop.IOLoop.current().start()
コード例 #13
0
import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options

# define parameter,like --port=9000 list=a,b,c,de,
tornado.options.define("port", default=8000, type=None)
tornado.options.define("list", default=[], type=str)


class IndexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write("hello customer server.")


if __name__ == '__main__':
    # convert command arguments  and save into tornado.options object
    tornado.options.parse_command_line()
    print(tornado.options.options.list)
    app = tornado.web.Application([(r"/", IndexHandler)])

    httpserver = tornado.httpserver.HTTPServer(app)
    # use parameter value
    httpserver.bind(tornado.options.options.port)
    httpserver.start(1)
    tornado.ioloop.IOLoop.current().start()
コード例 #14
0
import tornado.web
import tornado.ioloop
import tornado.options
import tornado.httpserver

tornado.options.options.define(name="port", default=8090, type=int)
tornado.options.options.define(name="address", default="0.0.0.0", type=str)
tornado.options.options.define(name="list", default=[], type=list)


class indexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write("hi,tornado")


if __name__ == '__main__':
    tornado.options.parse_config_file("config")
    tornado.options.options.logging = None
    print(tornado.options.options.list)
    app = tornado.web.Application([(r"/", indexHandler)])

    httpserver = tornado.httpserver.HTTPServer(app)
    httpserver.bind(port=tornado.options.options.port,
                    address=tornado.options.options.address)
    httpserver.start(1)

    tornado.ioloop.IOLoop.current().start()
コード例 #15
0

# 类似与Django中的类试图一样  通过方法进行匹配
class IndexHandler(web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write('this is for test!')


#  路由
app = web.Application([(r'/', IndexHandler)])

if __name__ == "__main__":
    # 实例化一个http链接的服务器
    httpserver = httpserver.HTTPServer(app)
    # 监听端口
    httpserver.bind(8888)
    # 启动io复用\
    # 启动多个子进程
    httpserver.start(4)
    # start 参数的取值范围:

    tornado.ioloop.IOLoop.current().start()
"""
    ~tornado.tcpserver.TCPServer.bind`/`~tornado.tcpserver.TCPServer.start`:
       simple multi-process::

            server = HTTPServer(app)
            server.bind(8888)
            server.start(0)  # Forks multiple sub-processes
            IOLoop.current().start()
コード例 #16
0
ファイル: server.py プロジェクト: seuwzh/keras-retinanet
        #         filePath=os.path.join(os.path.dirname(__file__),fileObj.filename)
        #         with open(filePath,'wb') as f:
        #              f.write(fileObj.body)
        file_uuid = uuid.uuid4()
        ext = filesDict['image'][0]['filename'].split('.')[-1]

        acceptable_ext = ['jpg', 'jpeg', 'png']
        if ext not in acceptable_ext:
            self.write('格式不正确')
            return

        file_name = str(file_uuid) + '.' + ext
        file_path = os.path.join(SERVER_TMP, file_name)
        with open(file_path, 'wb') as f:
            f.write(filesDict['image'][0]['body'])
        marked_path = await detect_image(file_path)
        self.write(marked_path)

    def option(self):
        self.set_header('Access-Control-Allow-Origin', '*')
        self.set_header('Access-Control-Allow-Headers', 'x-requested-with')
        self.set_header('Access-Control-Allow-Methods',
                        'POST, GET, PUT, DELETE')


if __name__ == '__main__':
    app = tornado.web.Application([(r'/detect', ScratchDetectorHandler)])
    httpserver = tornado.httpserver.HTTPServer(app)
    httpserver.bind(4000)
    httpserver.start()
    tornado.ioloop.IOLoop.instance().start()