我正在使用Google App Engine上的python项目,我正在使用Parse发送推送通知。
Eyerything工作正常但我注意到当我必须向Parse服务器发送POST
休息请求的不同设备发送多个通知时会出现一些延迟。
更清楚:
我有一个包含N个元素的循环,对于我必须发送推送通知的每个元素,因此我必须向Parse发出POST请求,并且每个连接(当然)需要大约300毫秒才能完成,所以它是相当的慢完成整个循环。
我认为应该更好地更改异步请求中的请求但是在搜索文档和Google之后我发现没有明确的示例如何使用urllib2
或urlfetch
以及如何使用Parse Key传递标头和Applicaton Id ..
工作(非异步)代码是
parse_connection = httplib.HTTPSConnection('api.parse.com', 443)
parse_connection.connect()
parse_app_id = parse_settings.APPLICATION_ID
parse_rest_api_key = parse_settings.REST_API_KEY
parse_connection.request('POST', '/1/push',
json.dumps({
"channels": ["blabla"],
"data": {
"alert": "A",
"title":"B",
"badge": "Increment",
"category": "C",
"sound": "default",
"additionalInfos": {"X": "Custom dict"}}
}),
{
"X-Parse-Application-Id": parse_app_id,
"X-Parse-REST-API-Key": parse_rest_api_key,
"Content-Type": "application/json"
})
return json.loads(parse_connection.getresponse().read())
为了使其异步,我想我应该使用urlfetch
和
rpc = urlfetch.create_rpc()
options = json.dumps({"channels": ["blabla"],
"data": {
"alert": "A",
"title": "B",
"badge": "Increment",
"category": "C",
"sound": "default",
"additionalInfos": {"X": "Custom dict"}},
})
urlfetch.make_fetch_call(rpc, "https://api.parse.com/1/push:443", options)
但是我找不到添加标题的例子。有什么建议吗? 谢谢!
答案 0 :(得分:5)
rpc = urlfetch.create_rpc(deadline=60)
url = "https://api.parse.com/1/push:443"
request_params = {
"channels": ["blabla"],
"data": {
"alert": "A",
"title":"B",
"badge": "Increment",
"category": "C",
"sound": "default",
"additionalInfos": {"X": "Custom dict"}}
}
headers = {
"X-Parse-Application-Id": parse_app_id,
"X-Parse-REST-API-Key": parse_rest_api_key,
"Content-Type": "application/json"
}
urlfetch.make_fetch_call(rpc,
url,
payload=json.dumps(request_params),
method=urlfetch.POST,
headers=headers)
如果您需要更多帮助,可以随时查看source