3 months ago
I'm facing an issue with internal requests made from within my Django backend while it's deployed on Railway. These requests work perfectly locally, but when I deploy the app to Railway, I get a 500 Internal Server Error for API calls like /o/token/
Issue:
My backend is making requests to itself (like to
/o/token/
for OAuth), and while it works locally, the request results in a 500 error when deployed on Railway.The backend is using
requests.post()
to the oauth2 authentication to retrieve access tokens, but it seems to be failing in production.
What I’ve Tried:
Request Handling:
I’m using
requests.post()
to make requests from within the Django app to other endpoints (e.g.,/o/token/
for OAuth).I’ve confirmed that these requests work perfectly on localhost (both the authentication and token retrieval).
The sample error logs:
response = response or self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/corsheaders/middleware.py", line 56, in call
result = self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 534, in makerequest
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/urllib3/connection.py", line 516, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/root/.nix-profile/lib/python3.12/http/client.py", line 1428, in getresponse
response.begin()
File "/root/.nix-profile/lib/python3.12/http/client.py", line 331, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/root/.nix-profile/lib/python3.12/http/client.py", line 292, in readstatus
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.nix-profile/lib/python3.12/socket.py", line 720, in readinto
return self._sock.recv_into(b)
^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.nix-profile/lib/python3.12/ssl.py", line 1251, in recv_into
return self.read(nbytes, buffer)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.nix-profile/lib/python3.12/ssl.py", line 1103, in read
return self._sslobj.read(len, buffer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
sys.exit(1)
SystemExit: 1
2 Replies
3 months ago
Can you please share a code snippet of where you are making the request and where the request is being handled ?
devparapalli
Can you please share a code snippet of where you are making the request and where the request is being handled ?
3 months ago
response = self.__get_oauth_token(authenticated_user.username, password)
def __get_oauth_token(self, username, password):
data = {
'grant_type': 'password',
'username': username,
'password': password,
'client_id': settings.FRONTEND_CLIENT_ID,
'client_secret': settings.FRONTEND_CLIENT_SECRET,
}
url = f"{settings.OAUTH2_URL}"
logger.info(f"Making request to OAuth token endpoint: {url}")
print(f"Making request to OAuth token endpoint: {url}")
response = requests.post(url="https://my-railway-url/o/token/", data=data, verify=False)
I have isolated the issue, the POST request to the o/token/ endpoint for oauth2 authentication is giving errors...i have tried making verify=True, but it just doesnt work....it gives the error:
Traceback (most recent call last):
File "/opt/venv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request(listener, req, client, addr)
File "/opt/venv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
respiter = self.wsgi(environ, resp.start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/wsgi.py", line 124, in __call__
response = self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 140, in get_response
response = self._middleware_chain(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/utils/deprecation.py", line 129, in __call__
response = response or self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/whitenoise/middleware.py", line 123, in __call__
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
return self.get_response(request)
File "/opt/venv/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
^^^^^^^^^^^^^^^^^^^^^^^^^^
r = adapter.send(request, **kwargs)
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
File "/opt/venv/lib/python3.12/site-packages/django/utils/deprecation.py", line 129, in __call__
^^^^^^^^^^^^^
response = response or self.get_response(request)
File "/opt/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = self._make_request(
response = get_response(request)
^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 534, in _make_request
File "/opt/venv/lib/python3.12/site-packages/corsheaders/middleware.py", line 56, in __call__