我使用PostgREST在Heroku上部署了the buildpack个实例。
Postgres模式由使用node-pg-migrate的Node.js程序创建。
迁移完成后,架构会发生变化,PostgREST需要reload the schema来更新其架构缓存。
要刷新缓存而不重新启动PostgREST服务器,可以选择向服务器进程发送SIGHUP信号:killall -HUP postgrest
由于我从Node.js程序(npm run migrate:up
)运行迁移,因此使用迁移后脚本发送该信号似乎是有意义的。我甚至不确定是否可以从其他服务器向PostgREST实例发送此类信号。
基本上,我要问的是如何从另一台服务器上的Node.js程序向Heroku上的PostgREST发送SIGHUP信号。
答案 0 :(得分:2)
在服务器之间触发架构重新加载的一种方法是让迁移后脚本在PostgREST附加到的数据库中运行NOTIFY postgrest_reload;
。然后在与PostgREST相同的服务器上运行类似pg_listen的工具来捕获该事件并发送sighup。例如:pg_listen <db-uri> postgrest_reload "killall -HUP postgrest"
。