2015-09-09 64 views
0

我有一个使用Celery运行任务的Flask应用程序。为了启动环境,我启动了一个redis服务器(用于存储结果),然后是Celery,然后是我的应用程序(python app.py)。要启动一项工作,我想用cURL发出一个POST请求,并且我想传入一个参数,该参数将存储在键值中:将参数传递给Flask应用程序/ Celery任务队列

curl ... -X POST -d'{ “key”:“value”}'

我的Python程序如何接收该参数?通常情况下,当你刚刚运行python app.py时,你会使用argv,但这似乎不起作用。

回答

3

你将卷曲到邮政变量的地址。
如果请求类型是POST并且解析post变量,app.py会尝试解析。

POST请求

curl ... -X POST -d '{"type": "sendemail","who":"[email protected]"}' 
curl ... -X POST -d '{"type": "sendsms","who":"+1297581234"}' 

app.js(我不知道瓶)

if request.type == 'POST': 
    if post['type'] == 'sendemail': 
     celery.createjob('sendemail',post['who']) 
    elif post['type'] == 'sendsms' 
     celery.createjob('sendsms',post['who']) 

了解flask,并参照本SO question

0

如果您想要发布POST请求,那么你可以使用requests.post() 虽然在接收端。您可以使用烧瓶提供的request object
例如:
在客户端:

from requests import post 
import json 
payload = {'product_id': 'B014F6U5N6', 'website_name': 'amazonIN', 'url': 'xyz'} 
r = post("http://localhost:5000", json.dumps(payload), headers={'Content-Type': 'application/json'}) 
print r.text 

在接收端:

from flask import request 
product_id = request.json['product_id'] 
url = request.json['url'] 
website_name = request.json['website_name']