我的问题很难描述,所以我将重点解释这种情况。所以假设我有两个不同的实体,可以在不同的机器上运行。我们先调用第一个 Manager ,然后调用第二个 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:带有路线的行被评论,因为它们搞乱了语法着色
答案 0 :(得分: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)