static seeded random.seed () возвращает смешанные результаты из загруженного JS, но ожидаемые результаты в консоли и от Postman - PullRequest
0 голосов
/ 12 мая 2019

Я запускаю сервер на Django, одна функция берет начальное число через запрос GET параметра URL, генерирует некоторые данные на основе этого начального значения и отправляет их обратно.
Формат URL:
mysite.com/api/generate/<seed>

ожидаемый результат: отправка GET на mysite.com/api/generate/99 принимается в Django в качестве начального значения 99. возвращаемые данные выбираются с помощью random.choice() засев с random.seed(99) из базы данных, содержащей один столбец имен.возвращаются следующие данные:

Walker Lewis
Dalia Aguilar
Meghan Ford
Theresa Hughes
Kenna Coffey
Kendra Ho

проблема

Вот где я запутался (код ниже для каждого):

  • 1000 запросов в почтальоне,все 1000 возвращают совершенно равными
  • приблизительно 100 запросов от консоли Google Chrome, все равны
  • от generate.js, которые сервер отправляет с index.html, делая тот же вызов, результаты вырождаются(примеры ниже)

Вызов почтальона
очень просто, GET mysite.com/api/generate/99

JQuery из консоли Chrome

$.ajax({
    url: "/api/generate/99",
    success: function( result ) {
        console.log(result.data)
    }})

jquery from generate.js

$.ajax({
        url: "/api/generate/99",
        success: function( result ) {
            var data = result.data;
        // data is now passed about the script, but debugging at the line above shows that data has already started to vary on a request by request basis

Как Postman, так и Chrome Console вернут ожидаемые результаты:

Walker Lewis
Dalia Aguilar
Meghan Ford
Theresa Hughes
Kenna Coffey
Kendra Ho

generate.js:

  • Первые два имени всегда правильные
  • Третье правильное большинство времени
  • чёрт, в лучшем случае 20% (оценка)
  • Все, что находится за четвертым, также нельзя отсеять, просто кажется, что оно случайно выбрано из базы данных

другая информация

  • Я подтвердил, что каждый запрос от каждого источника отправляется и принимается с сервера, а не из кеша
  • Подтвержденочто все источники бьют по одному и тому же серверу, в одном и том же состоянии и в одной и той же базе данных

Если у кого-нибудь есть какие-либо советы по этому поводу, это будет очень признательно.

1 Ответ

0 голосов
/ 21 мая 2019

Получилось, что это из-за того, что я отправил несколько AJAX-запросов "одновременно". Когда Django был позади Gunicorn / nginx, каждый запрос получает работника и обрабатывается правильно. при запросе непосредственно в докер передний конец возвращается со странными данными.

...