2012-07-28 11 views
5

Necesito solicitar GET, POST, PUT, etc. a otro URI debido a la búsqueda, pero no puedo encontrar una manera de hacerlo internamente con la pirámide. ¿Hay alguna manera de hacerlo en este momento?Supequés de pirámide

+0

¿Necesita llamar a las vistas dentro de su propia aplicación, o está accediendo a otro servidor por completo? –

+0

@MartijnPieters otro servidor – Wiz

+0

¿Podría volver a formular la pregunta, p. "¿Enviando solicitudes desde la aplicación Pyramid?" "Subpeticiones" es un término con un significado especial en Pyramid, por lo que es engañoso. –

Respuesta

9

Simplemente use las bibliotecas de python existentes para llamar a otros servidores web.

En python 2.x, use urllib2, para python 3.x, use urllib.request en su lugar. Alternativamente, puede instalar requests.

Tenga en cuenta que llamar a sitios externos desde su servidor mientras realiza una solicitud usted mismo podría significar que sus visitantes terminan esperando un servidor web de terceros que dejó de responder. Asegúrese de establecer tiempos de espera decentes.

+0

exactamente lo que estaba buscando. Gracias – Wiz

+0

para aumentar la experiencia del usuario, puede realizar la solicitud al servidor de terceros a través de AJAX. – born

6

pirámide utiliza WebOb que tiene una API del cliente desde la versión 1,2

from webob import Request 
r = Request.blank("http://google.com") 
response = r.send() 

general, cualquier cosa que desea anular para la solicitud que acaba de pasar como parámetro.

from webob import Request 
r = Request.blank("http://facebook.com",method="DELETE") 

otra característica útil es que se puede ver la solicitud como el http que se pasa sobre el alambre

print r 

DELETE HTTP/1.0 
Host: facebook.com:80 

docs

+0

¿Cómo usarías esto para las solicitudes de POST, PUT, etc.? – Wiz

+0

respuesta editada para explicar webob más. –

+0

Oh veo, todavía siento que las solicitudes tienen una API más limpia, así que seguí adelante y la usé, ¡pero gracias de todos modos! – Wiz

1

también comprobar el código de estado de respuesta: response.status_int I Úselo, por ejemplo, para introspectar mis URI internos y ver si el marco sirve realmente un URI relativo dado (ejemplo para generar rutas de navegación y hacer rutas intermedias como enlaces solo si hay páginas beh ind)

Cuestiones relacionadas