我有一个OTP应用程序,包括一个监督少量gen_servers的主管.典型的子规范如下:
{my_server,
{my_server, start_link, [123]},
permanent,
5000,
worker,
[my_server]}
Run Code Online (Sandbox Code Playgroud)
到目前为止没问题.
我现在想要使用与上面相同的模块Module/Fn向管理程序结构添加额外的gen_server,但是不同的参数,例如
{my_server_2,
{my_server, start_link, [123]},
permanent,
5000,
worker,
[my_server_2]}
Run Code Online (Sandbox Code Playgroud)
我认为这会奏效,但不会:
=SUPERVISOR REPORT==== 15-Apr-2010::16:50:13 ===
Supervisor: {local,my_sup}
Context: start_error
Reason: {already_started,<0.179.0>}
Offender: [{pid,undefined},
{name,my_server_2},
{mfa,{my_server,start_link,[]}},
{restart_type,permanent},
{shutdown,5000},
{child_type,worker}]
Run Code Online (Sandbox Code Playgroud)
每个子规范的第二个元素中的模块参数是否需要不同?
谢谢,
贾斯汀
我的猜测是my_server使用gen_server:start_link/4来注册它的名字,所以当第二个尝试启动时它不能,因为名字已被采用.gen_servers必须在没有名称(gen_server:start_link/3)或不同名称的情况下启动.
改变子规范的最后一个元素似乎很奇怪,它标识了工作者使用的模块列表.这真的是你想要的吗?
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |