我正在尝试编译一个巨大的、世界知名的数值天气预报代码 - 主要用 Fortran 90 编写 -广泛且成功地使用cpp以及 PGI、Intel 和 gfortran。现在,我继承了一个版本,其中专家添加了数百个可变参数宏案例。他们使用 Intel 和fpp,这可能更以 Fortran 为中心,并且可以让一切正常工作。我需要使用 gfortran,但无法让cpp通过其新添加的内容来处理此代码。
问题的总体简化如下 -
预处理代码:
PRINT *, "Hello" // "Don"
#define adderv(...) (myadd(__VA_ARGS__))
sumv = adderv(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
使用不带该选项的cpp-traditional
将处理可变参数宏,但不能处理 Fortran 连接:
$ cpp -P t.F90
PRINT *, "Hello"
sumv = (myadd(1, 2, 3, 4, 5))
Run Code Online (Sandbox Code Playgroud)
另一方面,使用-traditional
标志处理串联,但不处理可变参数宏:
$ cpp -P -traditional t.F90
t.F90:2:0: error: syntax error in macro parameter list
#define adderv(...) (myadd(__VA_ARGS__))
^
PRINT …
Run Code Online (Sandbox Code Playgroud) 首先,基本问题 - 是否有一种简单的方法可以将 HTTP 标头添加X-Amz-Invocation-Type:'Event'
到具有集成类型 Lambda 函数的现有 API 网关 POST 方法,以便我可以轻松地从现有端点启动异步 Lambda?
现在背景...
我有一个带有 POST 方法的 API 网关,集成类型Lambda 函数通过 curl 和 Javascript 对我来说效果很好,除了 29s API 超时。
通过一些搜索,我想我已经了解到设置 HTTP 标头 X-Amz-Invocation-Type:'Event' 是让我的 Lambda 函数异步运行所需要的。
我已经看到建议通过控制台并使用AWS 服务集成类型,然后添加标头以及映射模板等,这比我真正想尝试的要复杂得多(也许我没有一个选择?)。我试过了,但我“认为”我最终不得不处理映射模板,而且我有一个非常复杂的有效负载 - 真的有这么难吗?
我还看到了使用两个 Lambda 的建议,第一个通过 API 触发并且是同步的,然后触发异步一个。我知道如何做到这一点,它确实有优势(但也增加了复杂性),但我现在把它放在一边。
我读了一篇“暗示”可以通过 CLI 添加这个新 HTTP 标头的帖子。我已经对aws.apigateway.put_method()等东西进行了一些反复试验,但我有点在黑暗中拍摄。我喜欢认为有一种简单的方法可以做到这一点,但到目前为止,解决方案一直在回避我。