как увеличить время ожидания ответа в php? [Дубликат]

Это можно сделать, используя pytest . Просто напишите файл test_me.py с контентом:

import pytest

@pytest.mark.parametrize('name, left, right', [['foo', 'a', 'a'],
                                               ['bar', 'a', 'b'],
                                               ['baz', 'b', 'b']])
def test_me(name, left, right):
    assert left == right, name

И запустите свой тест командой py.test --tb=short test_me.py. Тогда выход будет выглядеть так:

=========================== test session starts ============================
platform darwin -- Python 2.7.6 -- py-1.4.23 -- pytest-2.6.1
collected 3 items

test_me.py .F.

================================= FAILURES =================================
_____________________________ test_me[bar-a-b] _____________________________
test_me.py:8: in test_me
    assert left == right, name
E   AssertionError: bar
==================== 1 failed, 2 passed in 0.01 seconds ====================

Это просто !. Кроме того, pytest имеет больше функций, таких как fixtures, mark, assert и т. Д. ...

146
задан Brandon Boone 16 September 2014 в 11:53
поделиться

4 ответа

Пожалуйста, прочитайте документацию $.ajax , это тема, посвященная теме.

$.ajax({
    url: "test.html",
    error: function(){
        // will fire when timeout is reached
    },
    success: function(){
        //do something
    },
    timeout: 3000 // sets timeout to 3 seconds
});

Вы можете увидеть, какой тип ошибки был получен путем доступа к параметру textStatus параметра error: function(jqXHR, textStatus, errorThrown). Возможные значения: «тайм-аут», «ошибка», «прервать» и «parsererror».

251
ответ дан Intelekshual 25 August 2018 в 16:51
поделиться

Вот несколько примеров, демонстрирующих установку и обнаружение тайм-аутов в старых и новых парадигмах jQuery.

Live Demo

Обещают с помощью jQuery 1.8 +

Promise.resolve(
  $.ajax({
    url: '/getData',
    timeout:3000 //3 second timeout
  })
).then(function(){
  //do something
}).catch(function(e) {
  if(e.statusText == 'timeout')
  {     
    alert('Native Promise: Failed from timeout'); 
    //do something. Try again perhaps?
  }
});

jQuery 1.8 +

$.ajax({
    url: '/getData',
    timeout:3000 //3 second timeout
}).done(function(){
    //do something
}).fail(function(jqXHR, textStatus){
    if(textStatus === 'timeout')
    {     
        alert('Failed from timeout'); 
        //do something. Try again perhaps?
    }
});​

jQuery & lt; = 1.7.2

$.ajax({
    url: '/getData',
    error: function(jqXHR, textStatus){
        if(textStatus === 'timeout')
        {     
             alert('Failed from timeout');         
            //do something. Try again perhaps?
        }
    },
    success: function(){
        //do something
    },
    timeout:3000 //3 second timeout
});

Обратите внимание, что параметр textStatus (или jqXHR.statusText) позволит вам узнать, что такое ошибка. Это может быть полезно, если вы хотите знать, что отказ был вызван таймаутом.

Ошибка

(jqXHR, textStatus, errorThrown)

Функция, которая вызывается, если запрос терпит неудачу. Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если это произошло. Возможные значения для второго аргумента (кроме нуля) - это «тайм-аут», «ошибка», «прервать» и «parsererror». При возникновении ошибки HTTP errorThrown получает текстовую часть статуса HTTP, например «Not Found» или «Internal Server Error». Начиная с jQuery 1.5, параметр ошибки может принимать массив функций. Каждая функция будет вызываться по очереди. Примечание. Этот обработчик не вызывается для междоменного скрипта и запросов JSONP.

src: http://api.jquery.com/jQuery.ajax/

96
ответ дан Brandon Boone 25 August 2018 в 16:51
поделиться

использовать полнофункциональную функцию .ajax jQuery. сравните с https://stackoverflow.com/a/3543713/1689451 для примера.

без тестирования, просто слияние вашего кода с указанным вопросом SO:

target = $(this).attr('data-target');

$.ajax({
    url: $(this).attr('href'),
    type: "GET",
    timeout: 2000,
    success: function(response) { $(target).modal({
        show: true
    }); },
    error: function(x, t, m) {
        if(t==="timeout") {
            alert("got timeout");
        } else {
            alert(t);
        }
    }
});​
2
ответ дан Community 25 August 2018 в 16:51
поделиться

Вы можете использовать настройку timeout в параметрах ajax, таких как:

$.ajax({
    url: "test.html",
    timeout: 3000,
    error: function(){
        //do something
    },
    success: function(){
        //do something
    }
});

. Читайте все о параметрах ajax: http://api.jquery.com/jQuery .ajax /

Помните, что когда происходит тайм-аут, обработчик error запускается, а не обработчик success:)

18
ответ дан Martin Jespersen 25 August 2018 в 16:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: