2

私の質問は説明するのが非常に難しいので、状況を説明することに集中します。したがって、異なるマシンで実行される可能性のある 2 つの異なるエンティティがあるとします。最初のものをManager、2番目のものをGeneratorと呼びましょう。マネージャーは、ユーザーを介して呼び出すことができる唯一のものです。

マネージャーにはgetVM(scenario_Id)、シナリオの ID をパラメーターとして受け取り、パラメーターとして指定された ID に対応するデータベースから BLOB を取得する というメソッドがあります。この BLOB は、実際には Generator に送信する必要がある XML 構造です。どちらもFlaskが実行されています。

別のマシンには、generateVM()受信した XML 構造に従って VM を作成するメソッドを備えたジェネレーターがあります。XML から VM を作成する方法については説明しません。

現在、私はこれを作りました:

マネジャー

# This method will be called by the user
@app.route("/getVM/<int:scId>", methods=['GET']) 
def getVM(scId):
    xmlContent = db.getXML(scId)  # So here is what I want to send
    generatorAddr = sgAdd + "/generateVM"   # sgAdd is declared in the Initialize() [IP of the Generator]

    # Here how should I put my data ? 
    # How can I transmit xmlContent ? 

    testReturn = urlopen(generatorAddr).read()
    return json.dumps(testReturn) 

発生器

# This method will be called by the user
@app.route("/generateVM", methods=['POST']) 
def generateVM():
    # Retrieve the XML content...
    return "Whatever"

ご覧のとおり、データ自体 (XML 構造) を送信する方法と、それを処理する方法に行き詰まっています。お気軽にお答えください。Flask について私がよく理解していないことがいくつかあるかもしれません。

よろしくお願いします

PS : 構文の配色を台無しにするため、ルートを含む行はコメント化されています。

4

1 に答える 1

0

何か不足していなければ、投稿リクエストの本文で送信していただけないでしょうか? それがあなたのgenerateVM方法のセットアップ方法ではありませんか?

@app.route("/getVM/<int:scId>", methods=['GET']) 
def getVM(scId):
    xmlContent = db.getXML(scId)  
    generatorAddr = sgAdd + "/generateVM"   

xml_str = some_method_to_generate_xml()
data_str = urllib.urlencode({'xml': xml_str})
urllib.urlopen(generatorAddr, data=data_str).read()
return json.dumps(testReturn) 

http://docs.python.org/2/library/urllib.html#urllib.urlopen

于 2012-11-14T15:41:17.677 に答える