Issues on POST requests made to oauth2 endpoint by application after deployment on Railway
zihao1319
HOBBYOP

10 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:

  1. 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:

May 17 10:19:46

response = response or self.get_response(request)

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner

May 17 10:19:46

response = get_response(request)

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/corsheaders/middleware.py", line 56, in call

May 17 10:19:46

result = self.get_response(request)

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/requests/sessions.py", line 703, in send

May 17 10:19:46

r = adapter.send(request, **kwargs)

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/requests/adapters.py", line 667, in send

May 17 10:19:46

resp = conn.urlopen(

May 17 10:19:46

^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen

May 17 10:19:46

response = self._make_request(

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 534, in makerequest

May 17 10:19:46

response = conn.getresponse()

May 17 10:19:46

^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/urllib3/connection.py", line 516, in getresponse

May 17 10:19:46

httplib_response = super().getresponse()

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/root/.nix-profile/lib/python3.12/http/client.py", line 1428, in getresponse

May 17 10:19:46

response.begin()

May 17 10:19:46

File "/root/.nix-profile/lib/python3.12/http/client.py", line 331, in begin

May 17 10:19:46

version, status, reason = self._read_status()

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/root/.nix-profile/lib/python3.12/http/client.py", line 292, in readstatus

May 17 10:19:46

line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/root/.nix-profile/lib/python3.12/socket.py", line 720, in readinto

May 17 10:19:46

return self._sock.recv_into(b)

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/root/.nix-profile/lib/python3.12/ssl.py", line 1251, in recv_into

May 17 10:19:46

return self.read(nbytes, buffer)

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/root/.nix-profile/lib/python3.12/ssl.py", line 1103, in read

May 17 10:19:46

return self._sslobj.read(len, buffer)

May 17 10:19:46

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

May 17 10:19:46

File "/opt/venv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort

May 17 10:19:46

sys.exit(1)

May 17 10:19:46

SystemExit: 1

$10 Bounty

2 Replies

devparapalli
HOBBY

10 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 ?

zihao1319
HOBBYOP

10 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__

Loading...