瀏覽代碼

调整优化

erlArango_http
maike 4 年之前
父節點
當前提交
98941e6293
共有 3 個文件被更改,包括 14 次插入14 次删除
  1. +2
    -2
      README.md
  2. +10
    -10
      include/agHttpCli.hrl
  3. +2
    -2
      src/agHttpCli/agAgencyPoolMgrIns.erl

+ 2
- 2
README.md 查看文件

@ -4,12 +4,12 @@
## 特点
高效,快速,简单易用。
1. 为了该驱动尽可能的高效,定制化封装了一个带连接池的http1.1的客户端(agHttpCli)
1. 为了该驱动尽可能的高效,定制化封装了一个带连接池的http1.1的客户端(agHttpCli)
封装的agHttpCli与同类http客户端测试对比可参考:https://github.com/SisMaker/httpc_bench
2. 为了更加快速的decode和encode json数据,json库引入了jiffy,经过测试jiffy效率还是很不错的。
3. 该驱动可以使用连接池,也可以仅仅在单进程(非连接池模式)建立多个连接进行各种数据操作。使用连接池时支持同步与异步操作,如果要使用异步操作需要额外保存requestId
等待接收数据返回,当前改驱动封装的API均使用同步操作,如果需要异步操作可自行修改。单进程操作时仅支持同步操作。
单进程模式下相对连接池模式可以减少一次数据在进程间的复制,对于大量数据的操作,可以考虑在数据管理进程单独建立数据库连接,而不用连接池。
单进程模式下相对连接池模式可以减少一次数据在进程间的复制,对于大量数据的操作,可以考虑在数据管理进程单独建立数据库连接,而不用连接池。
4. 连接池模式和非连接池模式API接口保证了同一性,不用区别对待, 易于理解和连接池模式和非连接池模式相互转换修改。
## 暂不支持批处理请求

+ 10
- 10
include/agHttpCli.hrl 查看文件

@ -5,7 +5,7 @@
-define(agBeamPool, agBeamPool).
-define(agBeamAgency, agBeamAgency).
%%
%%
-define(DEFAULT_BASE_URL, <<"http://127.0.0.1:8529">>).
-define(DEFAULT_DBNAME, <<"_system">>).
-define(DEFAULT_USER, <<"root">>).
@ -42,15 +42,6 @@
reply :: term()
}).
-record(recvState, {
stage = header :: header | body | done, %% tcp可能会有多个包
contentLength :: undefined | non_neg_integer() | chunked,
statusCode :: undefined | 100..505,
headers :: undefined | [binary()],
buffer = <<>> :: binary(),
body = <<>> :: binary()
}).
-record(reconnectState, {
min :: non_neg_integer(),
max :: non_neg_integer() | infinity,
@ -70,6 +61,15 @@
timerRef :: undefined | reference()
}).
-record(recvState, {
stage = header :: header | body | done, %% http(tcp)
contentLength :: undefined | non_neg_integer() | chunked,
statusCode :: undefined | 100..505,
headers :: undefined | [binary()],
buffer = <<>> :: binary(),
body = <<>> :: binary()
}).
-record(cliState, {
isHeadMethod = false :: boolean(), %% <<"HEAD">>
%method = undefined :: undefined | method(),

+ 2
- 2
src/agHttpCli/agAgencyPoolMgrIns.erl 查看文件

@ -52,8 +52,8 @@ handleMsg(_Msg, State) ->
{ok, State}.
terminate(_Reason, _State) ->
ets:delete_all_objects(?ETS_AG_Pool),
ets:delete_all_objects(?ETS_AG_Agency),
ets:delete(?ETS_AG_Pool),
ets:delete(?ETS_AG_Agency),
agKvsToBeam:load(?agBeamPool, []),
agKvsToBeam:load(?agBeamAgency, []),
ok.

Loading…
取消
儲存