多语言通用服务器 hi-nginx V1.0.2 发布

所以呢
 所以呢
发布于 2017年06月02日
收藏 58

hi-nginx是是基于nginx最新版开发的多语言通用服务器,它不仅继承了nginx的全部功能,100%兼容nginx,而且支持多种语言直接开发web应用。不仅性能强劲,而且易于开发,部署方便。目前,hi-nginx直接支持使用c++和python进行web应用开发,而无需其他后端应用服务器。hi-nginx本身就合并了后端服务器的功能。

hi-nginx还提供两个基于tengine和openresty的分支版本。因此,hi-nginx实际上还支持直接使用lua语言进行web开发。

此次发布的是hi-nginx-1.0.2。主要更新如下:

  • 更新nginx至最新版1.13.1

  • 添加基于redis和hiredis的session会话机制

  • 添加基于boost.python的python语言支持

c++例子:

#include "servlet.hpp"
namespace hi{
class hello : public servlet {
    public:

        void handler(request& req, response& res) {
            res.headers.find("Content-Type")->second = "text/plain;charset=UTF-8";
            res.content = "hello,world";
            res.status = 200;
        }

    };
}

extern "C" hi::servlet* create() {
    return new hi::hello();
}

extern "C" void destroy(hi::servlet* p) {
    delete p;
}

python例子:

            location = /pyecho {
                hi_python_content "hi_res.status(200)\nhi_res.content('hello,world')" ;
            }
            location ~ \.py$  {
                hi_python_script python;
            }

更多使用说明请移步:

    本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
    转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
    本文标题:多语言通用服务器 hi-nginx V1.0.2 发布
    加载中

    精彩评论

    所以呢
    所以呢

    引用来自“八风不动”的评论

    python访问mysql的时候,该用pymysql驱动,还是aiomysql?
    我用的python2.7+pymysql。

    最新评论(17

    所以呢
    所以呢

    引用来自“八风不动”的评论

    python访问mysql的时候,该用pymysql驱动,还是aiomysql?
    我用的python2.7+pymysql。
    八风不动
    八风不动
    python访问mysql的时候,该用pymysql驱动,还是aiomysql?
    所以呢
    所以呢

    引用来自“无名码农”的评论

    好像涉及到Socket的都不是非阻塞的吗?

    引用来自“webcpp”的评论

    安装了解下吧

    引用来自“无名码农”的评论

    if (conf->need_session == 1 && ngx_request.cookies.find(SESSION_ID_NAME) != ngx_request.cookies.end()) {
    if (!REDIS) {
    REDIS = std::make_shared<hi::redis>();
    }
    if (REDIS && !REDIS->is_connected() && conf->redis_host.len > 0 && conf->redis_port > 0) {
    REDIS->connect((char*) conf->redis_host.data, (int) conf->redis_port);
    }
    if (REDIS && REDIS->is_connected()) {
    SESSION_ID_VALUE = ngx_request.cookies[SESSION_ID_NAME ];
    if (!REDIS->exists(SESSION_ID_VALUE)) {
    REDIS->hset(SESSION_ID_VALUE, SESSION_ID_NAME, SESSION_ID_VALUE);
    REDIS->expire(SESSION_ID_VALUE, conf->session_expires);
    ngx_request.session[SESSION_ID_VALUE] = SESSION_ID_VALUE;
    } else {
    REDIS->hgetall(SESSION_ID_VALUE, ngx_request.session);
    }
    #ifdef USE_HIREDIS
    if (view_instance) {
    view_instance->REDIS = REDIS;
    }
    #endif
    勤快
    开源中国首席打酱油啊哎滴
    开源中国首席打酱油啊哎滴
    66666,不错不错
    无名码农
    无名码农

    引用来自“无名码农”的评论

    好像涉及到Socket的都不是非阻塞的吗?

    引用来自“webcpp”的评论

    安装了解下吧
    if (conf->need_session == 1 && ngx_request.cookies.find(SESSION_ID_NAME) != ngx_request.cookies.end()) {
    if (!REDIS) {
    REDIS = std::make_shared<hi::redis>();
    }
    if (REDIS && !REDIS->is_connected() && conf->redis_host.len > 0 && conf->redis_port > 0) {
    REDIS->connect((char*) conf->redis_host.data, (int) conf->redis_port);
    }
    if (REDIS && REDIS->is_connected()) {
    SESSION_ID_VALUE = ngx_request.cookies[SESSION_ID_NAME ];
    if (!REDIS->exists(SESSION_ID_VALUE)) {
    REDIS->hset(SESSION_ID_VALUE, SESSION_ID_NAME, SESSION_ID_VALUE);
    REDIS->expire(SESSION_ID_VALUE, conf->session_expires);
    ngx_request.session[SESSION_ID_VALUE] = SESSION_ID_VALUE;
    } else {
    REDIS->hgetall(SESSION_ID_VALUE, ngx_request.session);
    }
    #ifdef USE_HIREDIS
    if (view_instance) {
    view_instance->REDIS = REDIS;
    }
    #endif
    所以呢
    所以呢

    引用来自“kerneler”的评论

    为什么不直接用go语言呢
    go太弱了,还是直接用口语比较好
    所以呢
    所以呢

    引用来自“chenyuner”的评论

    感觉还不如直接用 ng-lua
    感觉很好啊
    所以呢
    所以呢

    引用来自“无名码农”的评论

    好像涉及到Socket的都不是非阻塞的吗?
    安装了解下吧
    所以呢
    所以呢

    引用来自“mickelfeng”的评论

    😆,python效率没lua高。
    python库比较全,久经考验,用户多
    所以呢
    所以呢

    引用来自“游客”的评论

    hi-nginx下python的性能跟lua差距有多大?
    自己测吧
    返回顶部
    顶部