Heroku运行的应用如何获取Procfile中定义的当前启动进程名称
你可以直接读取Heroku默认注入的DYNO环境变量来获取当前进程的类型,无需额外配置。
Heroku会为每个运行的dyno自动注入DYNO环境变量,其值格式为<进程名>.<实例序号>,比如web进程的变量值可能为web.1、web.2,job进程的变量值可能为job.1、job.3,你只需要对该变量的值按.分割取第一个元素,就能得到当前进程在Procfile中定义的名称。
在Rails应用中可以按以下方式使用:
# 安全提取当前进程类型 current_process = ENV['DYNO']&.split('.')&.first case current_process when 'web' # 仅web进程执行的初始化逻辑,比如挂载监控中间件、配置静态资源缓存 when 'job' # 仅job进程执行的初始化逻辑,比如设置队列并发数、初始化任务中间件 end
如果本地开发需要模拟对应进程的运行逻辑,可以在启动命令前手动添加环境变量,示例:DYNO=job.1 bundle exec run jobs
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

