- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 python 创建了一个 HttpTrigger Azure 函数。但我想在同一项目中使用 python 创建另一个 HttpTrigger Azure Functions。在此应用程序中,我想在执行第二个 HttpTrigger Azure 函数之后执行第一个 HttpTrigger Azure 函数。我怎样才能实现它?
因为在 Python Azure Functions 中没有持久函数。这就是为什么我无法理解如何执行一个又一个的 azure 函数。
最佳答案
假设有两个HttpTrigger函数HttpTriggerA
和HttpTriggerB
,我想到的直接解决方案是请求HttpTriggerA
的公共(public)url来自HttpTriggerB
通过使用 requests
的 HTTP 客户端请求来实现功能,如我的第一个版本 HttpTriggerB
中的代码所示代码。
import logging
import azure.functions as func
import requests
from urllib.parse import urlparse
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name') or 'Peter Pan'
codeA = req.params.get('codeA') or ''
o = urlparse(req.url)
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
print("B be invoked.")
resp = requests.get(f"{o.scheme}://{o.netloc}/api/HttpTriggerA?name={name}&code={codeA}")
return func.HttpResponse(f"Hello {name}! from B {resp.status_code == 200 and resp.text or ''}")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)
但是,我在本地或Azure上测试上面的代码后,它不起作用。它将卡在代码行 resp = requests.get(f"{o.scheme}://{o.netloc}/api/HttpTriggerA?name={name}&code={codeA}")
处,当我访问 url http(s)://<the host of local or Azure>:<7071 or 80>/api/HttpTriggerB?name=Peter%20Pan&code=<code for HttpTriggerB>&codeA=<code for HttpTriggerA>
时。挂起问题的原因似乎是由在单例或单线程中运行的函数引起的。
所以我切换到另一个解决方案,从HttpTriggerB
的html内容中使用Ajax请求。它的工作原理如下图所示。
这是我的代码 HttpTriggerB
函数,HttpTriggerA
函数只需由 func new
生成.
import logging
import azure.functions as func
#import requests
from urllib.parse import urlparse
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name') or 'Peter Pan'
codeA = req.params.get('codeA') or ''
o = urlparse(req.url)
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
print("B be invoked.")
#resp = requests.get(f"{o.scheme}://{o.netloc}/api/httptriggera?name={name}&code={req.params.get('codeA')}")
html = """
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
Hello """+name+"""! from B<br/>
<span id="A"></span>
<script>
$.when(
$.get('"""+o.scheme+'://'+o.netloc+'/api/HttpTriggerA?name='+name+'&code='+codeA+"""'),
$.ready
).done(function( data ) {
$( "#A" ).html( data[0] );
});
</script>
"""
return func.HttpResponse(html, mimetype="text/html")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)
希望有帮助。
关于python - HttpTrigger 使用python依次执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57143531/
我不知道如何描述这一点。我在一个页面上有几个 div,类似于: some lorem ipsum text here Macbeth s
我是一名优秀的程序员,十分优秀!