开发者社区 > 云原生 > Serverless > 正文

我去实例可以看到/tmp/hello.txt有内容写入。但是函数计算的日志还是啥也没有。

我去实例可以看到/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 是当前应用所需要的密钥信息配置:

密钥配置可以参考:https://www.serverless-devs.com/serverless-devs/command/config

密钥使用顺序可以参考:https://www.serverless-devs.com/serverless-devs/tool#密钥使用顺序与规范

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 获取组件列表)

- run: docker build xxx # 要执行的系统命令,类似于一种钩子的形式

path: ./src # 执行系统命令/钩子的路径

- plugin: myplugin # 与运行的插件 (可以通过s cli registry search --type Plugin 获取组件列表)

args: # 插件的参数信息

testKey: testValue

post-deploy: # 在deploy之后运行

- component: fc versions publish # 要运行的命令行

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

展开
收起
飘飘斯嘉丽 2023-05-20 09:53:08 120 0
1 条回答
写回答
取消 提交回答
  • instanceconcurrency: 2 改成 instanceconcurrency: 1 就好了。

    非 webserver 模式不支持单实例多并发。这个确实是个坑,我们优化一下哈。

    此答案来自钉钉群“Serverless 开发者技术学习群"

    2023-05-20 13:36:21
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
    Kubernetes下日志实时采集、存储与计算实践 立即下载
    日志数据采集与分析对接 立即下载