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@10.8.45.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@postgresql.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>