go - 我可以在 app-engine 上部署 Golang 应用程序并在不修改代码的情况下读/写文件吗?
问题描述
我在 Go 中创建了一个网络应用程序,我希望能够以最流畅的方式在服务器或应用程序引擎上运行它。
基本上我创建了一个 .exe(我正在 Windows 上开发)和一组带有静态文件的文件夹。另外还有一个文件夹,里面有 N 个配置文件。
这些配置文件包括设置数据库所需的所有配置、写入日志的文件夹/路径等。
在“时间 0”,当我双击本地计算机上的 .exe 时,安装过程开始。它查看配置文件(如果它们不存在,它们甚至会被创建)并根据我在控制台上给出的答案更新它们。此外,该应用程序在文件系统上生成日志文件。
我的问题:我可以“按原样”在应用引擎上“上传”我的 go 代码,并且只在 yaml 文件中包含一些特定于 appengine 的配置,还是我被迫修改我的 Go 代码,以便:1) main()必须在 app-engine 上的其他位置查找配置文件,并且 2)从 app-engine 上的特定路径读取/写入日志
换句话说,我想知道我是否可以实现我的网络应用程序的一种“一次编写并在任何地方运行/部署”版本。
这是我对社区的第一个问题,所以我希望我遵循所有指示。谢谢。
解决方案
“我可以在不修改代码的情况下进行部署”这个问题的答案是否定的,这是不可能的,因为您设计应用程序的方式。
Appengine 创建按需服务器实例来响应请求,然后在没有 Web 请求发生时关闭该实例。Appengine 应用程序的设计方式必须使其不依赖于具有配置文件的单个服务器。
您可以选择设计一个依赖于单个服务器上的单个配置文件的应用程序,但它不适合 google appengine。
推荐阅读
- java - 如何在 Java 中为德语使用 Open NLP “NER”?
- python - Python Bokeh - 使用 CheckboxGroup 和 JS 回调过滤散点图
- amazon-web-services - 如果下游服务关闭,则停止 AWS lambda 事件源推送事件
- javascript - 我正在努力从这个数组中删除两个 6
- sql - 下面的 SQL 查询将是什么?
- firebase - 没有为“对象”类型定义运算符“[]”。尝试定义运算符'[]'
- reactjs - 使用具体 JSX 组件的所有属性创建 Typescript 接口
- python - 如果键不存在,Python将键添加到字典列表
- reactjs - 如何在数组中包含跨度标签?
- geometry - 线到点的最小距离总是与线正交吗