Hello everyone.
As suggested by Markus on django-users group, I'm posting this here too.
-------
I'm using django (1, 10, 0, u'beta', 1).
When I try to reverse url in shell everything goes fine.
When under nginx/uwsgi with many concurrent request I getÂ
... /local/lib/python2.7/site-packages/django/urls/resolvers.py", line 241, in reverse_dict
  return self._reverse_dict[language_code]
KeyError: 'it'
After
a wile I figured out that RegexURLResolver is memoized by get_resolver
and so it acts like a singleton for a certain number of requests.
Analyzing
the code of  RegexURLResolver I found that the method _poupulate will
return directly if it has been called before and not yet finished.
  ...
  def _populate(self):
    if self._populating:
      return
    self._populating = True
  ... Â
if used for recursive call in a single thread this will not hurt, but in my case in uwsgi multi thread mode I got the error.
here is my quick and dirty fix:
class RegexURLResolver(LocaleRegexProvider):
  def __init__(self, regex, urlconf_name, default_kwargs=None, app_name=None, namespace=None):
    Â
    ...
    self._populating = False
    self.RLock = threading.RLock()
    ...
  def _populate(self):
    if self._populating:
      self.RLock.acquire()
      self.RLock.release()
      return
    self._populating = True
    self.RLock.acquire()
    Â
    ...
    self._populating = False
    self.RLock.release()
Does anyone know if there is a better solution?
Thank you.