2015-09-09 1 views
0

У меня есть приложение Flask, которое использует Celery для запуска задач. Чтобы запустить среду, я запускаю сервер redis (для хранения результатов), затем Celery, затем мое приложение (python app.py). Чтобы начать работу, я хочу выдать запрос POST с помощью cURL, и я хочу передать параметр, который будет сохранен в значении ключа:Передача аргументов в флеш-приложение/Целевая задача для сельдерея

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

Как моя программа Python получает этот параметр? Обычно вы используете argv, когда вы просто запускаете python app.py, но это, похоже, не работает.

ответ

3

Вы бы завились к адресу с переменными столбца.
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'] 
Смежные вопросы