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?
Advertisement
Answer
Check your procfile
and requirements.txt
. If anyone is looking, here is one working example of same official chat demo deployed on Heroku