Size: a a a

Django [ru] #STAY HOME

2019 April 23

NK

ID:178450749 in Django [ru] #STAY HOME
День добрый. Есть nginx+gunicorn+django При попытке перехода на опредленную страницу приложения(на ней джанга обращается к стороннему скрипту выполняющему некоторые вычиления) выдает "upstream timed out (110: Connection timed out) while reading response header from upstream" . Причем выдает только для опредленного хоста в сети, все остальные тачки ходят по приложению и в ус себе не дуют. Грешу на gunicorn ибо при использовании runserver проблема исчезает. Таймауты как на стороне nginx так и на gunicorn выставлены по 3000, буфер тоже увеличен. Пробовал как gevent так и tornado воркеров.
источник

D

Dmitry in Django [ru] #STAY HOME
Ruslan Popov
я вроде по доке накидал, но оно валится на 24 строке с ошибкой
AttributeError: type object 'PinCodeView' has no attribute 'get_extra_actions'
я бы как-то так сделал:
class PinCodeSerializer(serializers.Serializer):
   
   class Meta:
       model = PinCode
       fields = ['phone', 'pin']


class PinCodeView(generics.CreateAPIView):
   serializer_class = PinCodeSerializer

   def perform_create(self, serializer):
       """ сюда вся логика с пином
       """
       serializer.save(phone=phone, pin=pin)
источник

RP

Ruslan Popov in Django [ru] #STAY HOME
Dmitry
я бы как-то так сделал:
class PinCodeSerializer(serializers.Serializer):
   
   class Meta:
       model = PinCode
       fields = ['phone', 'pin']


class PinCodeView(generics.CreateAPIView):
   serializer_class = PinCodeSerializer

   def perform_create(self, serializer):
       """ сюда вся логика с пином
       """
       serializer.save(phone=phone, pin=pin)
Твои правки меняют лишь "оформление" кода, а у меня проблема глубже, код просто не стартует, валится на роутере DRF
источник

J

Je in Django [ru] #STAY HOME
ID:178450749
День добрый. Есть nginx+gunicorn+django При попытке перехода на опредленную страницу приложения(на ней джанга обращается к стороннему скрипту выполняющему некоторые вычиления) выдает "upstream timed out (110: Connection timed out) while reading response header from upstream" . Причем выдает только для опредленного хоста в сети, все остальные тачки ходят по приложению и в ус себе не дуют. Грешу на gunicorn ибо при использовании runserver проблема исчезает. Таймауты как на стороне nginx так и на gunicorn выставлены по 3000, буфер тоже увеличен. Пробовал как gevent так и tornado воркеров.
залогируй джангу (https://docs.djangoproject.com/en/2.2/topics/logging/#django-server), посмотри лог, доходит ли запрос до нее, когда она отвечает, если она отвечает после того, как клиент отпал - в ней тоже будут ошибки
источник

D

Dmitry in Django [ru] #STAY HOME
Ruslan Popov
Твои правки меняют лишь "оформление" кода, а у меня проблема глубже, код просто не стартует, валится на роутере DRF
скорее всего оно валится где-то в валидации сериалайзаера
источник

P

Pooh in Django [ru] #STAY HOME
Dmitry
честно не понимаю в чем проблема. Если вопрос в сериализации номера, то я пользуюсь django-phonenumber-field. Он мне всё валидирует хорошо. Если в том, что вытаскивать поля, сразу из нескольких моделей, то в этом тоже нет особой проблемы - можно упаковывать сериалайзер в сериалайзер
Интересно
источник

P

Pooh in Django [ru] #STAY HOME
Dmitry
скорее всего оно валится где-то в валидации сериалайзаера
Согласен
источник

NK

ID:178450749 in Django [ru] #STAY HOME
Je
залогируй джангу (https://docs.djangoproject.com/en/2.2/topics/logging/#django-server), посмотри лог, доходит ли запрос до нее, когда она отвечает, если она отвечает после того, как клиент отпал - в ней тоже будут ошибки
спасибо, попробую
источник

RP

Ruslan Popov in Django [ru] #STAY HOME
Dmitry
скорее всего оно валится где-то в валидации сериалайзаера
а если принять во внимание, что он валится на старте всего этого шедевра, до отправки первого запроса, тогда какие варианты?
источник

D

Dmitry in Django [ru] #STAY HOME
Ruslan Popov
а если принять во внимание, что он валится на старте всего этого шедевра, до отправки первого запроса, тогда какие варианты?
может с урлом что-то, попробуйте так:
reg_urls = [
path('your_url/', PinCodeView.as_view(), name='pin_code'),
]
...
urlpatterns = [
   path('smth/', include(reg_urls)),
   ]
источник

D

Dmitry in Django [ru] #STAY HOME
возможно вы подключаете ГенерикВью как Вьюсет и в этом ошибка
источник

RP

Ruslan Popov in Django [ru] #STAY HOME
path('api/', include('src.api.urls', namespace='api')),
источник

RP

Ruslan Popov in Django [ru] #STAY HOME
'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.
источник

RP

Ruslan Popov in Django [ru] #STAY HOME
Вот это же стандартное использование URL, какой app_name он хочет? В документации ничего такого не вижу.
источник

NK

ID:93729480 in Django [ru] #STAY HOME
можешь показать код на dpaste?
источник

RP

Ruslan Popov in Django [ru] #STAY HOME
ID:93729480
можешь показать код на dpaste?
источник

NK

ID:93729480 in Django [ru] #STAY HOME
path('api/', include(('src.api.urls', 'api'))),
источник

NK

ID:93729480 in Django [ru] #STAY HOME
попробуйте так
источник

RP

Ruslan Popov in Django [ru] #STAY HOME
та же ошибка, у меня django 2.2
источник

NK

ID:93729480 in Django [ru] #STAY HOME
Ruslan Popov
та же ошибка, у меня django 2.2
интересно, у меня так работает
источник