es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error 404 en una aplicación antigua que ha funcionado por años.

SimplifyConnections.appspot.com ha funcionado durante años, pero de repente muestra errores 404 que impiden la lectura de los pines de mapa existentes y de los nuevos pines de mapa. Este nuevo fallo ocurre tanto en la aplicación implementada como en el SDK local. Puedes experimentar en el enlace creando tu propio pin de mapa y parecerá que es aceptado, pero cuando refrescas el enlace, tu pin de mapa desaparece. Solo mi registro sugiere que hay un error (ver abajo).

He intentado crear un código simplificado que fallaría de la misma manera, pero mi código simplificado falla por otro error que no sé cómo circumnavegar: 405 Método no permitido; El método POST está prohibido para este recurso. Pero creo que mi código abajo puede sugerir el error de routing que veo en el registro de la aplicación real.

Muestro a continuación el error de enrutamiento registrado que ahora obtengo.

INFO     2021-11-28 17:28:32,466 module.py:861] default: "GET /details.txt?place=Playground HTTP/1.1" 404 -
INFO     2021-11-28 17:29:18,511 module.py:861] default: "GET /details.txt?Action=add&lat=23.828670922688467&lng=-8.0815625&details=Brian&category=1&label=BS&place=Playground HTTP/1.1" 404 -

Mi pseudocódigo es el siguiente.

app.yaml

runtime: python27
threadsafe: true

handlers:
- url: /
  script: mainapp.app

basic_scaling:
  max_instances: 1
  #idle_timeout: 5m

mainapp.py

import os
import logging
import webapp2
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template

class MainPage(webapp2.RequestHandler):
    def get(self):
        logging.info("MainPage:  ")
        self.response.out.write("pin in")
        template_values = {}
        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))


class Details(webapp2.RequestHandler):
    def get(self):
        logging.info("Details:  ")
        action = self.request.get("Action", "Detail")
        logging.info("action: %s " % (action))
        self.response.out.write("pin in")


app = webapp2.WSGIApplication(
                                     [('/', MainPage),
                                      ('/details.txt', Details)],
                                     debug=True)

index.html (NB. En la cuarta línea desde el final, “post” debe cambiarse a “get” para evitar el error 405, pero el código real es un “post”.)

<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    </head>
<script>
function process(form) {
    var details = escape(form.data.value);
    var url = "details.txt?Action=add&name=" +name;

    // ===== send the data to the server

    downloadUrl(url, function(doc) {
        if (doc) 
        {markerID = doc; }
        });  


    alert("Your information has been processed.");

}

function downloadUrl(url, callback) {
 var status = -1;
 var request = createXmlHttpRequest();
 if (!request) {
   return false;
 }

 request.onreadystatechange = function() {
   if (request.readyState == 4) {
     try {
       status = request.status;
     } catch (e) {
       // Usually indicates request timed out in FF.
     }
     if (status == 200) {
     // next line altered: Text replaces XML
       callback(request.responseText, request.status);
       request.onreadystatechange = function() {};
     }
   }
 }
 request.open('GET', url, true);
 try {
   request.send(null);
 } catch (e) {
   changeStatus(e);
 }
};
</script>
<body>

<form name="myForm" action="#" onsubmit="return process(this)" method="post">
Name: <input type="text" name="name">
<input type="submit" value="Submit">
</form>

</body>

No sé cómo mostrar el código real con brevedad, pero espero que el código de ejemplo proporcione suficiente información. No creo que la aplicación de mapeo sea relevante para este error, pero produce las solicitudes de enrutamiento reales que son manejadas por la llamada de retorno.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Problema con SimplifyConnections.appspot.com

    El sitio web SimplifyConnections.appspot.com, que ha estado funcionando durante años, de repente comenzó a arrojar errores 404. Esto impide la lectura de los pines de mapa existentes y la creación de nuevos. El problema ocurre tanto en la aplicación implementada como en el SDK local.

    Cuando un usuario crea un nuevo pin de mapa, parece ser aceptado. Sin embargo, al actualizar la página, el pin desaparece. La única indicación de un error está en el registro, que muestra un error de enrutamiento.

    El código proporcionado aquí es una versión simplificada del código que falla de la misma manera. Sin embargo, el código simplificado encuentra un error diferente: un error 405 No se permite el método.

    El seudocódigo proporcionado muestra que el error de enrutamiento parece ocurrir en la clase Details, que maneja las solicitudes a /details.txt.

    En este momento, no está claro qué está causando el problema, pero parece estar relacionado con el enrutamiento. La aplicación de mapeo probablemente no sea relevante para el error, pero produce las solicitudes de enrutamiento que son manejadas por la devolución de llamada.

    Se requiere una investigación adicional para identificar y resolver el problema.

Comments are closed.