3

我使用buildpack在 Heroku 上部署了一个PostgREST实例。

Postgres 模式由使用node-pg-migrate的 Node.js 程序创建。

迁移运行后,模式发生了变化,PostgREST 需要重新加载模式以更新其模式缓存。

要在不重新启动 PostgREST 服务器的情况下刷新缓存,可以选择向服务器进程发送 SIGHUP 信号:killall -HUP postgrest

由于我从 Node.js 程序 ( npm run migrate:up) 运行迁移,因此使用迁移后脚本发送该信号似乎是有意义的。我什至不确定是否可以将这样的信号从另一台服务器发送到 PostgREST 实例。

基本上,我要问的是如何从另一台服务器上的 Node.js 程序向 Heroku 上的 PostgREST 发送 SIGHUP 信号。

4

1 回答 1

2

触发跨服务器模式重新加载的一种方法是让您的迁移后脚本NOTIFY postgrest_reload;在 PostgREST 附加到的数据库中运行。然后在与 PostgREST 相同的服务器上,运行 pg_listen 之类的工具捕获该事件并发送 sighup。例如:pg_listen <db-uri> postgrest_reload "killall -HUP postgrest"

您甚至可以让 PostgREST 在架构更改时自动重新加载其架构缓存(使用 DDL 触发器),如https://postgrest.com/en/v4.4/admin.html#schema-reloading中所述

于 2018-03-11T19:21:10.917 回答