s local invoke --function-name run_workflow -e '{"job_type":"run_workflow", "job_data":{"job_id": 2043}}' --invocation-type async 异步调用是这个参数是怎么用的, sync和async参数没有感受到区别
async参数指定 invoking 一个函数时使用的模式是同步还是异步。
当指定为--invocation-type sync时(或不指定),表示同步调用。这时函数计算服务会等待函数执行完成后再返回结果。
当指定为--invocation-type async时,表示异步调用。函数计算服务会立即返回一个 Task ID,然后在后台执行函数。调用方可以通过 Task ID 获取函数执行结果。
具体区别如下:
同步调用:
json
Copy
$ local invoke --function-name run_workflow -e '{"job_type":"run_workflow", "job_data":{"job_id": 2043}}'
{
"body": "Function executed successfully!",
"statusCode": 200
}
异步调用:
apache
Copy
$ local invoke --function-name run_workflow -e '{"job_type":"run_workflow", "job_data":{"job_id": 2043}}' --invocation-type async
{"taskId":"83b7fb3b-8843-4afd-8c9a-30e0c8a42dba"}
$ local get-task-result --task-id 83b7fb3b-8843-4afd-8c9a-30e0c8a42dba
{
"body": "Function executed successfully!",
"statusCode": 200
}
之所以你没有感受到区别,可能是函数执行时间很短,返回结果也很快。
对于执行时间比较长的函数,异步调用可以让调用方先返回,不用等待函数执行完成。
我建议你尝试编写一个执行时间稍长(数秒或数十秒)的函数,然后试试看同步和异步调用的区别。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。