我有一个运行在Google App Engine上的Node.js应用。
我想进行续集迁移。
是否可以从我的node.js应用程序的实例中运行命令?
本质上类似于heroko的run
命令,它将在emoku dyno内部执行一次性过程。
如果这不可能,那么运行迁移的最佳实践是什么?
我总是可以将其添加到gcp-build
中,但这将在每次部署中运行。
答案 0 :(得分:0)
无法在GAE中运行独立的脚本/应用程序,请参见How do I run custom python script in Google App engine(在python上下文中,但一般思想适用于所有运行时)。
我(数据存储区)迁移的运行方式是将迁移脚本本身的功能移植到GAE应用程序中受管理员保护的处理程序的主体中,该主体是通过对特定URL的HTTP请求触发的。我对其进行了一些重新设计,以将可能长时间运行的迁移操作分成一系列较小的操作(使用推送任务队列),对GAE更友好。这使我可以一次对迁移一个数据存储实体集进行实时测试,并且只有在对其操作完全确信的情况下才进行多个集迁移。也不必担心最终的一致性(我使用查询来确定要迁移的实体)-我只是反复调用迁移,直到无所事事为止。
迁移完成后,我删除了相应的代码(但保留了处理程序本身以用于将来的迁移)。作为积极的副作用,我几乎将迁移历史记录捕获到了存储库的历史记录中。