Re: Usando PL/Python me arroja un SocketError: Permission denied

From: Marcos Ortiz <mlortiz(at)uci(dot)cu>
To: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Usando PL/Python me arroja un SocketError: Permission denied
Date: 2015-05-23 16:23:38
Message-ID: 5560A98A.8070901@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Parece que es eso mismo, Anthony. Porque me da el mismo error cuando
ejecuto esa función:
('NO', '[Errno 13] Permission denied' )
¿Entonces cómo podría cambiar la configuración del sistema para que
PostgreSQL pueda usar dichos puertos? El tema es que estoy integrando
Redis, PostgreSQL y Neo4j. En el caso de Redis usa el puerto 6379, y
Neo4j usa el puerto 7474, por lo que el user postgres tendría que tener
permisos para enviar peticiones a dichos puertos. ¿Es así?

On 23/05/15 11:49, Anthony Sotolongo wrote:
> Hola Marcos el usuario postgres tendrá permisos para para ejecutar en
> ese rango de puerto o eso no tiene nada que ver?
>
> De todos trata de ejecutar esta función a ver si le llegas desde
> dentro de postgresql al servidor de neo4j(lo que hace es intenter
> conectarse un servidor por un puerto):
> CREATE OR REPLACE FUNCTION test_server_puerto( ip text, puerto
> integer) RETURNS text AS
> $BODY$
>
> import socket
>
> host=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> try:
> host.connect((ip, puerto))
> host.close()
>
> return 'OK'
>
> except Exception,e:
>
> return 'NO:',str(e)
>
> $BODY$
> LANGUAGE plpythonu VOLATILE
> COST 100;
>
>
>
>
> El 5/23/2015 a las 1:06 AM, Marcos Ortiz escribió:
>> Saludos a toda la lista.
>> Estoy usando PL/Python para poder conectarme a Neo4j desde
>> PostgreSQL, y cuando trato de ejecutar el código me está arrojando un
>> SocketError: Permission denied.
>>
>> Este error generalmente Python lo arroja cuando se está tratando de
>> iniciar un servicio que escuche por un puerto por debajo de 1024 y se
>> hace con un usuario que no tiene privilegios para hacerlo. Ahora mi
>> duda es si para la ejecución de alguna función en PL/Python,
>> PostgreSQL internamente use un puerto de estos.
>>
>> Aquí les dejo el código de la función, que al final lo que hace es
>> conectarse al grafo de Neo4j y buscar si un nodo existe en el mismo.
>> Neo4j usa el puerto 7474 para esto:
>> ------------------------------------------------------------------------------------------------------------------
>>
>> CREATE OR REPLACE FUNCTION buscar_nodo_estudiante(nombre_est text)
>> RETURNS text AS
>> $BODY$
>> from py2neo import Graph
>> from py2neo.cypher import CypherTransaction
>> graph = Graph("http://neo4j:neo4j(at)10(dot)8(dot)45(dot)146:7474/db/data")
>> tx = graph.cypher.begin()
>>
>> sentencia = "MATCH (ee:Estudiante) WHERE ee.nombre = {name} RETURN ee;"
>> tx.append(sentencia, parameters={'name': nombre_est})
>> estudiante= tx.commit()
>> if(estudiante):
>> print("El estudiante es%\n", estudiante)
>> else:
>> print("El estudiante %s no esta dentro del grafo.%\n", estudiante)
>> $BODY$
>> LANGUAGE plpythonu VOLATILE
>> COST 100;
>> ------------------------------------------------------------------------------------------------------------------------------
>>
>> Este mismo código lo ejecuto en un script.py y se ejecuta normalmente
>> sin problemas, pero cuando lo ejecuto desde PostgreSQL es que me da
>> el Permission denied. ¿Tienen alguna idea que podría ser esto?
>> Gracias de antemano.
>>
>> -
>> Enviado a la lista de correo pgsql-es-ayuda
>> (pgsql-es-ayuda(at)postgresql(dot)org)
>> Para cambiar tu suscripci�n:
>> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

--
Marcos Ortiz <http://about.me/marcosortiz>, Sr. Product Manager (Data
Infrastructure) at UCI
@marcosluis2186 <http://twitter.com/marcosluis2186>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arist lara 2015-05-27 13:22:08 postgresql dejo de escuchar despues de un apagado inesperado del equipo
Previous Message Anthony Sotolongo 2015-05-23 15:49:34 Re: Usando PL/Python me arroja un SocketError: Permission denied