fix micro service
This commit is contained in:
parent
380c7949b8
commit
333d51613e
@ -349,38 +349,14 @@ kill_os_pid(OSPid) when is_integer(OSPid) ->
|
||||
|
||||
%% 执行命令
|
||||
-spec kill_service(WorkDir0 :: binary(), ExecCmd0 :: binary() | [binary()], OSPid :: integer()) -> no_return().
|
||||
kill_service(WorkDir0, ExecCmd0, OSPid) when is_binary(WorkDir0), is_binary(ExecCmd0) ->
|
||||
WorkDir = binary_to_list(WorkDir0),
|
||||
PortSettings = [
|
||||
{cd, WorkDir},
|
||||
exit_status
|
||||
],
|
||||
|
||||
ExecCmd = binary_to_list(ExecCmd0),
|
||||
RealExecCmd = filename:absname_join(WorkDir, ExecCmd),
|
||||
Port = erlang:open_port({spawn_executable, RealExecCmd}, PortSettings),
|
||||
receive
|
||||
{Port, {exit_status, Code}} ->
|
||||
lager:debug("[service] exit with code: ~p", [Code])
|
||||
after 5000 ->
|
||||
kill_os_pid(OSPid)
|
||||
end,
|
||||
is_port(Port) andalso erlang:port_close(Port);
|
||||
kill_service(WorkDir0, [ExecCmd0|Args], OSPid) when is_binary(WorkDir0), is_binary(ExecCmd0) ->
|
||||
WorkDir = binary_to_list(WorkDir0),
|
||||
PortSettings = [
|
||||
{cd, WorkDir},
|
||||
{args, [binary_to_list(A) || A <- Args]},
|
||||
exit_status
|
||||
],
|
||||
ExecCmd = binary_to_list(ExecCmd0),
|
||||
RealExecCmd = filename:absname_join(WorkDir, ExecCmd),
|
||||
|
||||
kill_service(WorkDir0, ExecCmd0, OSPid) when is_binary(WorkDir0) ->
|
||||
{RealExecCmd, PortSettings} = make_cmd(WorkDir0, ExecCmd0),
|
||||
Port = erlang:open_port({spawn_executable, RealExecCmd}, PortSettings),
|
||||
receive
|
||||
{Port, {exit_status, Code}} ->
|
||||
lager:debug("[service] exit with code: ~p", [Code])
|
||||
after 5000 ->
|
||||
erlang:port_close(Port),
|
||||
kill_os_pid(OSPid)
|
||||
end,
|
||||
is_port(Port) andalso erlang:port_close(Port).
|
||||
@ -388,26 +364,7 @@ kill_service(WorkDir0, [ExecCmd0|Args], OSPid) when is_binary(WorkDir0), is_bina
|
||||
%% 启动微服务
|
||||
-spec boot_service(WorkDir :: binary(), ExecCmd :: binary() | [binary()]) -> {ok, Port :: port()} | {error, Reason :: binary()}.
|
||||
boot_service(WorkDir0, ExecCmd0) when is_binary(WorkDir0), is_binary(ExecCmd0) ->
|
||||
WorkDir = binary_to_list(WorkDir0),
|
||||
PortSettings = [
|
||||
{cd, WorkDir},
|
||||
exit_status
|
||||
],
|
||||
|
||||
ExecCmd = binary_to_list(ExecCmd0),
|
||||
RealExecCmd = filename:absname_join(WorkDir, ExecCmd),
|
||||
Port = erlang:open_port({spawn_executable, RealExecCmd}, PortSettings),
|
||||
{ok, Port};
|
||||
boot_service(WorkDir0, [ExecCmd0|Args]) when is_binary(WorkDir0), is_binary(ExecCmd0) ->
|
||||
WorkDir = binary_to_list(WorkDir0),
|
||||
PortSettings = [
|
||||
{cd, WorkDir},
|
||||
{args, [binary_to_list(A) || A <- Args]},
|
||||
exit_status
|
||||
],
|
||||
ExecCmd = binary_to_list(ExecCmd0),
|
||||
RealExecCmd = filename:absname_join(WorkDir, ExecCmd),
|
||||
|
||||
{RealExecCmd, PortSettings} = make_cmd(WorkDir0, ExecCmd0),
|
||||
Port = erlang:open_port({spawn_executable, RealExecCmd}, PortSettings),
|
||||
{ok, Port}.
|
||||
|
||||
@ -419,3 +376,24 @@ is_url(Input) when is_binary(Input) ->
|
||||
catch
|
||||
_:_ -> false
|
||||
end.
|
||||
|
||||
-spec make_cmd(WorkDir0 :: binary(), Cmd0 :: binary() | [binary()]) -> {RealCmd :: string(), PortSettings :: list()}.
|
||||
make_cmd(WorkDir0, Cmd0) when is_binary(Cmd0) ->
|
||||
WorkDir = binary_to_list(WorkDir0),
|
||||
PortSettings = [
|
||||
{cd, WorkDir},
|
||||
exit_status
|
||||
],
|
||||
ExecCmd = binary_to_list(Cmd0),
|
||||
RealExecCmd = filename:absname_join(WorkDir, ExecCmd),
|
||||
{RealExecCmd, PortSettings};
|
||||
make_cmd(WorkDir0, [Cmd0|Args]) when is_binary(Cmd0) ->
|
||||
WorkDir = binary_to_list(WorkDir0),
|
||||
PortSettings = [
|
||||
{cd, WorkDir},
|
||||
{args, [binary_to_list(A) || A <- Args]},
|
||||
exit_status
|
||||
],
|
||||
ExecCmd = binary_to_list(Cmd0),
|
||||
RealExecCmd = filename:absname_join(WorkDir, ExecCmd),
|
||||
{RealExecCmd, PortSettings}.
|
||||
Loading…
x
Reference in New Issue
Block a user