Reputation: 1882
I am trying to deploy Tornado on Heroku. I am able to run a simple "hello world" app on using this method: http://kzk9.net/deploying-tornado-on-heroku-mac-os-x
But while trying Tornado demo-app "chatdemo", the server is crashing with following logs:
11:22:45 web.1 | 2012-11-12 11:22:45 [18442] [ERROR] Exception in worker process:
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | 2012-11-12 11:22:45 [18442] [INFO] Worker exiting (pid: 18442)
11:22:45 web.1 | 2012-11-12 11:22:45 [18443] [ERROR] Exception in worker process:
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | 2012-11-12 11:22:45 [18443] [INFO] Worker exiting (pid: 18443)
11:22:45 web.1 | 2012-11-12 11:22:45 [18444] [ERROR] Exception in worker process:
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | 2012-11-12 11:22:45 [18444] [INFO] Worker exiting (pid: 18444)
11:22:45 web.1 | 2012-11-12 11:22:45 [18445] [ERROR] Exception in worker process:
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 461, in spawn_worker
11:22:45 web.1 | worker.init_process()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/workers/base.py", line 101, in init_process
11:22:45 web.1 | self.wsgi = self.app.wsgi()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi
11:22:45 web.1 | self.callable = self.load()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 24, in load
11:22:45 web.1 | return util.import_app(self.app_uri)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/util.py", line 292, in import_app
11:22:45 web.1 | app = eval(obj, mod.__dict__)
11:22:45 web.1 | File "<string>", line 1, in <module>
11:22:45 web.1 | NameError: name 'application' is not defined
11:22:45 web.1 | 2012-11-12 11:22:45 [18445] [INFO] Worker exiting (pid: 18445)
11:22:45 web.1 | Traceback (most recent call last):
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/bin/gunicorn", line 8, in <module>
11:22:45 web.1 | load_entry_point('gunicorn==0.15.0', 'console_scripts', 'gunicorn')()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 32, in run
11:22:45 web.1 | WSGIApplication("%prog [OPTIONS] APP_MODULE").run()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/app/base.py", line 124, in run
11:22:45 web.1 | Arbiter(self).run()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 185, in run
11:22:45 web.1 | self.halt(reason=inst.reason, exit_status=inst.exit_status)
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 280, in halt
11:22:45 web.1 | self.stop()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 328, in stop
11:22:45 web.1 | self.reap_workers()
11:22:45 web.1 | File "/Users/princekumar/Downloads/tornado-2.4/demos/ChatOnHeroku/lib/python2.7/site-packages/gunicorn/arbiter.py", line 421, in reap_workers
11:22:45 web.1 | raise HaltServer(reason, self.WORKER_BOOT_ERROR)
11:22:45 web.1 | gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
11:22:45 web.1 | exited with code 1
11:22:45 system | sending SIGTERM to all processes
SIGTERM received
Anybody has any idea whats wrong?
Upvotes: 4
Views: 1841
Reputation: 135
Answers provided by @avi and @apoclyps arestill working fine on Tornado 6.1 as of July 2021.
My Procfile for Tornado web app appears below. It also works on AWS:
web: python application.py --port=$port --logging=error
Upvotes: 1
Reputation: 531
Your Procfile should contain the following :
web: python app.py
(replace app.py with 'chatdemo.py' or the name of your app)
Upvotes: 1