@jezeniel
Howard3
http://links.lenddo.com/python364
http://links.lenddo.com/pythonosx
http://links.lenddo.com/pythonlinux
$ git clone https://github.com/jezeniel/processing-the-social-web
$ cd processing-the-social-web
$ python3 -m venv venv # if `python3` not found try `python`
$ source venv/bin/activate # OSX/Linux
$ venv/Scripts/activate # Windows
$ pip install -r requirements.txt
github.com/jezeniel/processing-the-social-web
from flask import Flask, jsonify, request, render_template
app = Flask(__name__)
@app.route('/page/<name>/')
def page(name):
return render_template('hello.html', name=name)
@app.route('/api/get/<id>')
def index(id):
return jsonify({'id': id})
@app.route('/api/post/', methods=['POST'])
def api():
data = request.get_json()
return jsonify(request_body=data)
app.py
<html>
<body>
<h1>Hello, {{name}}</h1>
</body>
</html>
template/hello.html
$ export FLASK_APP=app.py
$ flask run
Linux/Mac
> set FLASK_APP=app.py
> flask run
Windows
from flask import Flask, jsonify, request, render_template
app = Flask(__name__)
@app.route('/page/<name>/')
def page(name):
return render_template('hello.html', name=name)
@app.route('/api/get/')
def index():
return jsonify({'hello': 'world'})
@app.route('/api/post/', methods=['POST'])
def api():
data = request.get_json()
response = {'request_body': data}
return jsonify(response)
app.py
<html>
<body>
<h1>Hello, {{name}}</h1>
</body>
</html>
template/hello.html
from celery import Celery
from flask import Flask, jsonify, request, render_template
def make_celery(app):
celery = Celery(app.import_name,
broker=app.config['CELERY_BROKER_URL'],
backend=app.config['CELERY_RESULT_BACKEND'])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
app = Flask(__name__)
app.config.update(
CELERY_BROKER_URL='redis://localhost:6379',
CELERY_RESULT_BACKEND='redis://localhost:6379'
)
celery = make_celery(app)
@celery.task()
def add(a, b):
print(a + b)
return a + b
@celery.task()
def add(a, b):
return a + b
...
@app.route('/api/add/<a>/<b>/')
def add_api(a, b):
result = add.delay(a, b)
return jsonify({'result': result.get()})
app.py
$ celery -A app.celery worker
terminal
app.py
import time
...
@celery.task()
def add(a, b):
time.sleep(5)
print(a + b)
return a + b
@app.route('/api/add/<int:a>/<int:b>/')
def add_api(a, b):
result = add.delay(a, b)
return jsonify({'result': result.get()})
Will block the request until task is complete
from celery.result import AsyncResult
...
celery = make_celery(app)
...
@app.route('/api/add/<int:a>/<int:b>/')
def add_api(a, b):
result = add.delay(a, b)
return jsonify({'task_id': result.id})
@app.route('/api/results/<task_id>')
def results_api(task_id):
result = AsyncResult(id=task_id, app=celery)
return jsonify({'status': result.status, 'result': result.result})
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
app.py
from app import db, User
db.create_all() # Create your db first if it doesn't exit
# Create an entry
guest = User(username='juan', email='juan.lazy@gmail.com')
db.session.add(guest)
db.session.commit()
# Querying
User.query.all()
User.query.filter_by(username='juan').first()
https://developers.facebook.com
http://links.lenddo.com/cognitive