【发布时间】:2019-07-23 15:24:20
【问题描述】:
我正在 Google App Engine 上构建一个网络爬虫应用程序。我想使用 post 方法将变量传递给 Flask。然后,接收到的变量成为我的网络爬虫应用程序的输入。但是,Flask 只接受来自 post 的单个变量。如果我在函数中添加另一个变量,Flask 会崩溃。
我对 Flask 和 Google 应用引擎的了解有限。我为这个问题苦苦挣扎了好几天,我们将非常感谢您的帮助。
功能失败
#server-side function that does not work,with 2 variable passed
@app.route('/bac',methods=['GET', 'POST'])
def bac():
request_json = request.get_json()
filename = request_json["filename"]
url = request_json["url"]
#baseconnect.Baseconnect(url=url,filename=filename).run()
return filename,url
#The function to post on client side
import requests
req = requests.Session()
data = req.post('https://project.appspot.com/bac',json={"filename":"yuan","url":"https:...f5"})
print(data.text)
#output:
Internal server eror 500
成功的功能
#server-side function that works,with 1 variable passed
@app.route('/bac',methods=['GET', 'POST'])
def bac():
request_json = request.get_json()
filename = request_json["filename"]
#url = request_json["url"]
#baseconnect.Baseconnect(url=url,filename=filename).run()
return filename
#The function to post on client side
import requests
req = requests.Session()
data = req.post('https://project.appspot.com/bac',json={"filename":"yuan"})
print(data.text)
#output:
yuan
Flask 似乎只接受单个变量。有什么问题....
【问题讨论】:
-
filename真的定义了吗? -
是的,当爬取任务完成后,输出将使用文件名。
-
这很奇怪。据我所知,
request.args.get只获取URL中的查询字符串,这里不指定。 -
你能尝试在
request.args.get()之后的路径内打印filename吗? -
@RNHTTR 我想说声谢谢~~。那就是问题所在。我不知道烧瓶与普通的 Python 函数有什么不同。你帮了我很多~
标签: google-app-engine flask internal-server-error