For some reason, I’m getting this error when trying to connect to the twitter api using the python sdk.
It’s been working before, not sure what make this stop working.

This is the full stack trace.

ERROR:celery.app.trace:Task my_app.tasks.tasks.do[54ee5dfc-a4e4-44e5-86f0-6bd30d691ccd] raised unexpected: RecursionError('maximum recursion depth exceeded while calling a Python object',)
Traceback (most recent call last):
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/celery/app/trace.py", line 382, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/my_app/tasks/tasks.py", line 97, in do
    result = modules_service.run(module_name, json_input)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/my_app/service/services.py", line 35, in run
    return function(input_params)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/my_app/modules/fetcher/media_fetcher.py", line 61, in execute
    return run_twitter_fetcher(collection_name, params)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/my_app/modules/fetcher/media_fetcher.py", line 99, in run_twitter_fetcher
    rows = run_generic_fetcher(tw, params)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/my_app/modules/fetcher/media_fetcher.py", line 248, in run_generic_fetcher
    data = adapter.fetch(params)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/my_app/modules/fetcher/adapters/twitter.py", line 92, in fetch
    self.account = self.client.accounts(id=_params.get('account_id'))
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/twitter_ads/client.py", line 94, in accounts
    return Account.load(self, id) if id else Account.all(self)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/twitter_ads/account.py", line 48, in load
    response = Request(client, 'get', resource, params=kwargs).perform()
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/twitter_ads/http.py", line 67, in perform
    response = self.__oauth_request()
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/twitter_ads/http.py", line 104, in __oauth_request
    files=files, stream=stream)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/requests/sessions.py", line 546, in get
    return self.request('GET', url, **kwargs)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
    self._validate_conn(conn)
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
    conn.connect()
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/urllib3/connection.py", line 332, in connect
    cert_reqs=resolve_cert_reqs(self.cert_reqs),
  File "/Users/my_user/workspace/my_app/my_app_platform/my_app-engine/env/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 281, in create_urllib3_context
    context.options |= options
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 465, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 465, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 465, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  [Previous line repeated 104 more times]
  File "...", line -1, in [rest of traceback truncated]
RecursionError: maximum recursion depth exceeded while calling a Python object

My script is running in a celery worker, my app is monkey_patched as early as possible, and it’s been working so far.

Any ideas?

Maybe it’s an issue with the requests version?

@Outflink Sorry, but it’s hard to assume what’s the issue here only from that trace log. Also, as you mentioned if it’s heavily “monkey_patched” I’m not sure how can we provide support there (We don’t know how to reproduce it.).