PythonAnywhere wsgi deployment error - django

I've followed the steps and everything works fine on a local server but when I try to deploy on PythonAnywhere I keep running into problems. I don't know what I'm doing with the WSGI file so I just copied and pasted a template with some adjustments:
import os
import sys
path = '/home/KTruong88/Kappa_Ranks/Kappa_Ranks/'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'Kappa_Ranks.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application
I try to run the thing, and it gives me in the error logs:
TypeError: get_wsgi_application() takes 0 positional arguments but 2 were given
I don't know how if I configured my wsgi file properly, and I don't know where I can even access the get_wsgi_application() function so I can adjust it, or if I could, what would I adjust it too. How can I fix this?

You did not need to "copy and paste" a WSGI file in the first place; it is included in the project that was created when you did django-admin.py startproject.
Nevertheless, the problem is that application should be the object returned from get_wsgi_application, not the function itself:
application = get_wsgi_application()

Related

Error running WSGI application, no module named django

I have some problem while deploying my website to Pythonanywhere.com
i've done all things step by step like it was in a guide-line
and at the end i catch an error:
error log
2022-03-27 20:07:23,699: Error running WSGI application 2022-03-27
20:07:23,700: ModuleNotFoundError: No module named 'django' 2022-03-27
20:07:23,700: File "/var/www/usitingshit_pythonanywhere_com_wsgi.py",
line 88, in <module> 2022-03-27 20:07:23,700: from django.core.wsgi
import get_wsgi_application 2022-03-27 20:07:23,700:
i've tried to change wsgi.py file
import os
import sys
path = '/home/usitingshit/deploy_course_work/'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] ='/home/usitingshit/deploy_course_work/vodprojectstroy_site/wsgi.py'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
structure of my project:
has anybody had the same problem? how can i fix that? sorry if this question is silly, coz i am a beginner in django
Django is preinstalled on PythonAnywhere, so it's basically available out of the box. However, if you want to use a virtual environment for the web app, you need to ensure that Django is available in it too. The error you're seeing is most probably indicating that you set a virtual environment for the web app, but did not install Django in it.

Deployment of a Django project on Gandi server

While trying to deploy my django project on my Gandy hosting server, while starting running uwsgi, the uwsgi.log shows an error
ModuleNotFoundError: No module named 'django'
while executing the following line from my wsgi.py file
from django.core.wsgi import get_wsgi_application
here is the full wsgi file:
import sys
import os
import os.path
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),
'projectname')))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
from what I understand, django is not installed in my virtual environment, but it is listed in my requirements.txt file
Django==3.0.6
django-background-tasks==1.2.5
django-compat==1.0.15
django-extensions==3.0.3
django-mathfilters==1.0.0
Can anyone pin point where I am missing something?
I realise you've probably moved on from this now!
In case others hit the same issue, you need to deploy your code, not just upload it, for the Gandi Python environment to read requirements.txt and build your code.
See https://docs.gandi.net/en/web_hosting/connection/git.html?highlight=deploy#deploy-your-code

Error while deploying Django app on cpanel(shared hosting)

I m new to django. I created a web with dajngo,and successfully deployed it in the server
The python app has been successfully setup and virtual environment has been setup.
but while running the web it gives me "Server Error (500)" I don't know whats the problem.
I think error is in "wsgi.py" file but i'm unable to idenify it.
My wsgi file:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'karan_web.settings')
application = get_wsgi_application()
my "passenger_wsgi.py" file is:
import imp
import os
import sys
sys.path.insert(0, os.path.dirname(__file__))
wsgi = imp.load_source('wsgi', 'karan_web/wsgi.py')
application = wsgi.application
can someone help me with it;
Sorry for the late answer, I had figured out the as to this just forgot to post it.
As I stated in my question, the actual problem was in passenger_wsgi.py, the django server starts with the wsgi.py and act as the gate way to the Django server.
So whenever a Django project is uploaded on the hosting server, It creates a passenger_wsgi.py file and one default wsgi.py, address of which is provided in passenger_wsgi.py by default.
So we just need to change that address and provide the address of our own wsgi.py in the project
In my case it was
import os
import sys
from karan_web import wsgi
application = wsgi.application
just edit in passenger_wsgi.py the following code.
from karan_web.wsgi import application
You need to check if your code syntax is correct and running properly. If its still doesn't work try to delete and recreate your database in cpanel and check if you have made all necessary migrations, don't forget to restart your python app. If after all these it still doesn't work check if all your files have the correct file permission(766).

Constantly need to reset django local settings module

I have made two settings files, one for local testing and one for production (heroku). Every time I pull and start working locally I need to run the following two commands for it to work:
export DJANGO_SETTINGS_MODULE=
DJANGO_SETTINGS_MODULE=projectName.settings_local
Without doing so I get the error that the local settings module cannot be found. This error appeared after I tried to have both settings files in a settings folder, which I did not get to work so I put them back in the original place. Does anyone have an idea how I can fix this?
In your wsgi.py file setdefault settings file path, in your case local setting file
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectName.settings_local")
application = get_wsgi_application()
You may also need to add in manage.py file
.....
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectName.settings_local")
.......
I hope this will help you.

Do I need to edit the wsgi.py file to install the New Relic Agent using Gunicorn/Python?

I have a django project deployed through digitalocean. I am trying to install the New Relic Python agent and I have followed all of the instructions, but when I edit the wsgi.py, I receive a 502 error. My website is using Django and Unicorn, so I'm not sure if I should even be editing the wsgi.py file? The instructions are quite confusing. I currently have this wsgi.py file in my project directory, and everything works correctly.
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Now when I change this to the following (following the New Relic quick start), I receive a 502 error, and nothing in my django/nginx/wsgi logs tells me why.
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
import newrelic.agent
newrelic.agent.initialize(os.path.join(os.path.dirname(os.path.dirname(__file__), 'newrelic.ini')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
My guess is that I'm not even supposed to edit the WSGI.py file. Another thing that confuses me is that New Relic has directions for installing the Python agent for both uwsgi and Unicorn.