从 PostgreSQL 调用 returns JSON 的网络服务
Call a webservice that returns JSON from PostgreSQL
PSQL 中的函数有没有办法调用 returns 和 JSON 的网络服务,并使用此 JSON 在触发器调用中执行数据库中的某些操作?
psql
是命令行客户端应用程序。所以没有。
如果你的意思是pl/pgsql
,服务器端函数语言,那么……还是不行。按照设计,它无法建立网络连接、访问文件等。
您可以使用 PL/Python 或 PL/Perl 来执行此操作...但您不应该这样做。如果 Web 服务非常慢,存在 DNS 问题等,您的整个数据库可能会慢到无法正常爬网。
而是使用 LISTEN
和 NOTIFY
与外部客户端一起处理工作队列并将结果存储在数据库中。使用 PostgreSQL 9.5 的 SKIP LOCKED
这可以很容易地同时完成。对于 9.4 及更早版本,最简单的方法是串行执行,或者使用一个 worker 管理多个异步请求。
这很像 "how do I send email from a stored procedure" 问题。您可以使用 plperl 或 plpython,但您不应该使用。
PSQL 中的函数有没有办法调用 returns 和 JSON 的网络服务,并使用此 JSON 在触发器调用中执行数据库中的某些操作?
psql
是命令行客户端应用程序。所以没有。
如果你的意思是pl/pgsql
,服务器端函数语言,那么……还是不行。按照设计,它无法建立网络连接、访问文件等。
您可以使用 PL/Python 或 PL/Perl 来执行此操作...但您不应该这样做。如果 Web 服务非常慢,存在 DNS 问题等,您的整个数据库可能会慢到无法正常爬网。
而是使用 LISTEN
和 NOTIFY
与外部客户端一起处理工作队列并将结果存储在数据库中。使用 PostgreSQL 9.5 的 SKIP LOCKED
这可以很容易地同时完成。对于 9.4 及更早版本,最简单的方法是串行执行,或者使用一个 worker 管理多个异步请求。
这很像 "how do I send email from a stored procedure" 问题。您可以使用 plperl 或 plpython,但您不应该使用。