Форум сайта python.su
0
Есть торнадо приложение которое обслуживает игру:
import signal import time import tornado.httpserver import tornado.ioloop as loop from django.core.management.base import BaseCommand, CommandError #from privatemessages.tornadoapp import application import logging logger = logging.getLogger('tornado_commander') from game.tornado.lobby import MainHandler, LobbyHandler, GrahhHandler, GrahhApiHandler from game.tornado.match import MatchHandler class Command(BaseCommand): args = '[port_number]' help = 'Starts the Tornado application for message handling.' def sig_handler(self, sig, frame): """Catch signal and init callback""" tornado.ioloop.IOLoop.instance().add_callback(self.shutdown) def shutdown(self): """Stop server and add callback to stop i/o loop""" self.http_server.stop() msg = 'Tornado Launcher. IOLoop.instance stop' logger.debug(msg) io_loop = tornado.ioloop.IOLoop.instance() io_loop.add_timeout(time.time() + 2, io_loop.stop) def handle(self, *args, **options): urls = [ (r'/(?P<apikey>.+)/', MainHandler), (r'/lobby', LobbyHandler), (r'/match/([0-9]+)', MatchHandler), (r'/crossdomain.xml', GrahhHandler), (r'/api/crossdomain.xml', GrahhApiHandler) ] app = tornado.web.Application(urls) port = 8003 address = "5.101.123.195" self.http_server = tornado.httpserver.HTTPServer(app) self.http_server.listen(port, address=address) #pool = tornadoredis.ConnectionPool(host=address, port=8003) #c = tornadoredis.Client(connection_pool=pool) #c.connect() #c.psubscribe("*", lambda msg: c.listen(ThreadHandler.pubsub_message)) # Init signals handler signal.signal(signal.SIGTERM, self.sig_handler) # This will also catch KeyboardInterrupt exception signal.signal(signal.SIGINT, self.sig_handler) msg = 'Tornado Launcher. IOLoop.instance start' logger.debug(msg) loop.IOLoop.instance().start()
# code of application log = open('tornado.' + str(port) + '.log', 'a+') ctx = daemon.DaemonContext(stdout=log, stderr=log, working_directory='.') ctx.open() loop.IOLoop.instance().start()
Traceback (most recent call last):
File “manage.py”, line 10, in <module>
execute_from_command_line(sys.argv)
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/__init__.py”, line 385, in execute_from_command_line
utility.execute()
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/__init__.py”, line 377, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/base.py”, line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/base.py”, line 338, in execute
output = self.handle(*args, **options)
File “/var/www/inozemcev/data/www/lastargument.ru/last_argument/game/management/commands/starttornadoapp.py”, line 78, in handle
loop.IOLoop.instance().start()
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/tornado/ioloop.py”, line 858, in start
event_pairs = self._impl.poll(poll_timeout)
IOError: Bad file descriptor
Traceback (most recent call last):
File “/usr/lib/python3.2/logging/__init__.py”, line 943, in emit
self.flush()
File “/usr/lib/python3.2/logging/__init__.py”, line 923, in flush
self.stream.flush()
IOError: Bad file descriptor
Logged from file starttornadoapp.py, line 75
DEBUG Tornado Launcher. IOLoop.instance start
Traceback (most recent call last):
File “manage.py”, line 10, in <module>
execute_from_command_line(sys.argv)
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/__init__.py”, line 385, in execute_from_command_line
utility.execute()
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/__init__.py”, line 377, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/base.py”, line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/django/core/management/base.py”, line 338, in execute
output = self.handle(*args, **options)
File “/var/www/inozemcev/data/www/lastargument.ru/last_argument/game/management/commands/starttornadoapp.py”, line 77, in handle
loop.IOLoop.instance().start()
File “/var/www/inozemcev/data/www/lastargument.ru/la/lib/python3.2/site-packages/tornado/ioloop.py”, line 858, in start
event_pairs = self._impl.poll(poll_timeout)
IOError: Bad file descriptor
Офлайн
33
Запускай через supervisord и не парься.
Офлайн