我去实例可以看到/tmp/hello.txt有内容写入。但是函数计算的日志还是啥也没有。
dockerfile如下:
FROM python:3.9-buster
WORKDIR /usr/src COPY . . RUN pip install loguru -i https://pypi.tuna.tsinghua.edu.cn/simple
CMD [ "python", "/usr/src/app.py" ]
app.py如下:
import time from loguru import logger
logger.info("async hello logur11u")
def write_hello(): with open("/tmp/hello.txt", "w") as f: f.write("hello world!") print("async print hello world1111") time.sleep(60)
if name == 'main': write_hello()
s.yaml文件如下:
edition: 1.0.0 name: hello-world-app
access: "default"
vars: # 全局变量 region: "cn-zhangjiakou" service: name: "hello-world-1" description: 'hello world by serverless devs'
services: helloworld: # 业务名称/模块名称 # 如果只想针对 helloworld 下面的业务进行相关操作,可以在命令行中加上 helloworld,例如: # 只对helloworld进行构建:s helloworld build # 如果不带有 helloworld ,而是直接执行 s build,工具则会对当前Yaml下,所有和 helloworld 平级的业务模块(如有其他平级的模块,例如下面注释的next-function),按照一定顺序进行 build 操作 component: fc # 组件名称,Serverless Devs 工具本身类似于一种游戏机,不具备具体的业务能力,组件类似于游戏卡,用户通过向游戏机中插入不同的游戏卡实现不同的功能,即通过使用不同的组件实现不同的具体业务能力 actions: # 自定义执行逻辑,关于actions 的使用,可以参考:https://www.serverless-devs.com/serverless-devs/yaml#行为描述 pre-deploy: # 在deploy之前运行 - component: fc build --use-docker --dockerfile ./code/Dockerfile # 要运行的组件,格式为【component: 组件名 命令 参数】(可以通过s cli registry search --type Component 获取组件列表)
props:
region: ${vars.region} # 关于变量的使用方法,可以参考:https://www.serverless-devs.com/serverless-devs/yaml#变量赋值
service: ${vars.service}
function:
name: "helloworld"
description: 'hello world by serverless devs'
caPort: 9000
memorySize: 256
timeout: 100
runtime: custom-container
instanceConcurrency: 2
customContainerConfig:
accelerationType: "Default"
image: "registry.cn-zhangjiakou.aliyuncs.com/jinchongzi/test:v1"
webServerMode: false
command: '["python", "/usr/src/app.py"]'
codeUri: ./code
asyncConfiguration:
maxAsyncEventAgeInSeconds: 86400
maxAsyncRetryAttempts: 0
statefulInvocation: true
triggers:
- name: schedulers-1
description: "schedulers-1"
type: timer
qualifier: LATEST
config:
payload: schedulers-1
cronExpression: CRON_TZ=Asia/Shanghai 0 0 0 * * *
enable: true
instanceconcurrency: 2 改成 instanceconcurrency: 1 就好了。
非 webserver 模式不支持单实例多并发。这个确实是个坑,我们优化一下哈。
此答案来自钉钉群“Serverless 开发者技术学习群"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。