2017-08-09 1 views
-3

私は、プロジェクトを持っているどのようなgolangフレームワークがHTTPとcliモードの両方をサポートしていますか?

それは、APIアクセスのためのHTTPモードをサポートする必要があり、また、(このような監視のRedisのキューなど)いくつかのバックグラウンドジョブを実行するために、CLIモードをサポートする必要が

I'vは、いくつかのフレームワークを見て:ジン、マティーニ、ビーゴ。しかし、彼らはそれをサポートしていないようです

誰も私にいくつかのアドバイスを与えることができますか?ありがとう

+2

は、フレームワークを使用しないでください:

package main import "github.com/go-martini/martini" func main() { // start some function doing background stuff go someCliFunc() // initiate a struct and start a job in the background go func(){ cli := MyPackage.SomeCli{} cli.Start() }() m := martini.Classic() m.Get("/", func() string { return "Hello world!" }) m.Run() } 

実際に背景のものをやっ機能は、このような構造を持つことができます:あなたがしなければならないのは、別のゴルーチンでそれを開始しています。 – Flimzy

+0

@Flimzyは何を言ったのか。フレームワークを探すのではなく、ソフトウェアを書くだけです。 – Adrian

+0

ありがとう、私はすぐに仕事を終える必要があるので、私はフレームワークを使用することを選択し、それは私の開発をスピードアップすることができます。私はそれに同意する枠組みに自分自身を制限することはありません – Poisoner

答えて

1

フレームワークで実際にあなたを制限することはできません。 martiniフレームワークの例を見てみましょう。ここで

彼らのgithubのページから最初のサンプル:

package main 

import "github.com/go-martini/martini" 

func main() { 
    m := martini.Classic() 
    m.Get("/", func() string { 
     return "Hello world!" 
    }) 
    m.Run() 
} 

m.Run()を実行する前に、あなたが好きなCLIの仕事を開始することができます。

func someCliFunc() { 
    // do some initial stuff 

    defer func() { 
     // do some stuff on exit 
    }() 

    // start the loop 
    for { 
     // do stuff regularly 

     // make sure the loop does not use the entire cpu 
     time.Sleep(5*time.Second) 
    } 
} 
+0

ありがとう、この方法は私の質問を解決することができます。実際にこれは私がフレームワークでやっていることです。それはうまく動作します。 – Poisoner

+0

私の悪い、私はそれをマークすることを忘れました。 :) – Poisoner

関連する問題