У меня есть персональный сайт, написанный на Django, размещенный на Webfaction. Я пытаюсь создать веб-инструмент, в котором пользователи вводят несколько чисел, сервер получает их на бэкэнд через AJAX, сервер принимает их в качестве входных параметров для определенной системы уравнений и решает их численно с использованием некоторого пакета Python, а сервервозвращает решение через AJAX, и Javascript представляет его пользователю.
Этот процесс работает безупречно, когда я тестирую его на Localhost. Но на сервере Webfaction часто происходит сбой после нескольких итераций функции числового приближения, если входные данные не очень просты.
И scipy.optimize.fsolve, и scipy.optimize.root создают проблему,Я перепробовал несколько «методов», и все они породили проблему. Кроме того, я изначально использовал план Webfaction по 10 ГБ ОЗУ на 1 ГБ, 100 ГБ для хранения SSD, пропускную способность 1 ТБ, общий сервер », и я попытался переключиться на их 30 ГБ / мес. План "облачного сервера" - настройка, похожая на мой Localhost - но, похоже, это не имеет даже малейшего значения.
from scipy.optimize import fsolve
import logging
from forms import *
logger = logging.getLogger(__name__)
def dppsubmit(request):
form = ParamsForm(request.POST)
if form.is_valid():
raw_pd = form.cleaned_data['params']
#[...code in which I define "pd" from "raw_pd"...]
def func(x):
outputs = []
i = 1
while i <= len(x):
#[...code in which I generate the output vector...]
outputs.append(y)
i += 1
logger.log(10, "FUNC ITERATION")
return outputs
logger.log(10, "GOT HERE 1")
solution = fsolve(func, np.asarray([[.01]*num_states], dtype=np.float64))
logger.log(10, "GOT HERE 2")
to_return = ",".join(solution.x.tolist())
return render(request, 'personal/output.html', {'output':to_return})
Как видно из сообщений регистрации в приведенном выше упрощенном коде, когда он работает должным образом, он записывает «GOT HERE 1», затем «FUNC ITERATION» несколько раз, после чего следует«ПОЛУЧИЛ ЗДЕСЬ 2», а затем возвращает строку, которая представляет вектор решения. Но вместо этого он часто записывает «ПОЛУЧИЛ ЗДЕСЬ 1», а затем несколько раз «FUNC ITERATION» (обычно <20), а затем вылетает веб-сайт. </p>
Как я могу получить эту числовую оценку для работы насервер без сбоев?