Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gunicorn 'Application Object Must Be Callable' error

I'm trying to deploy an app written in Dash, using gunicorn and nginx. I successfully deployed this same app a few months ago, when I knew what I was doing. I wanted to make some updates and redeploy, but now the deployment wont work, even if I get rid of all my updates. When I run gunicorn, I get an error, Application must be callable.

I have my project in folder, which contains unified.py file, which has my app. In unified.py, app = dash.Dash(__name__, external_stylesheets=external_stylesheets) so I'm defining my app variable as app.

I run gunicorn folder.unified:app and get this error. However, if I run from folder.unified import app I get the app object and all the proper attributes, no problem.

I have tried all sorts of variations on the gunicorn call (such as being in the project folder and saying gunicornunified:app, being the parent folder and usinggunicorn folder:app,gunicorn folder:unified`. I know that it can work because it was working before. But for the life of me, I cannot figure out what is going on right now.

I expect it to run similarly to when I run the app with python using python unified.py.

There was a moment where I thought I solved it because I started getting a different error (saying I couldn't get a .pkl file from another folder), but then I commented out those lines in my unified.py file and it went back to the same Application must be callable error!

like image 635
user10521398 Avatar asked May 09 '19 16:05

user10521398


1 Answers

add server after defining app in main code. (Ex:main.py)

app=dash.Dash(__name__)   
server=app.server

then run gunicorn in terminal

gunicorn main:server

if you want to access over LAN and set a port and workers

gunicorn -w 4 -b 0.0.0.0:4000 app_test:server
like image 145
Niyu Avatar answered Oct 21 '22 05:10

Niyu