Minimal, secure Flask handler pattern for TradingView webhooks: verify HMAC signature and enqueue processing.
Python (Flask)
Category: Code Library • Tags: python, webhook, flask • Published: PUBLISH_DATE
Handler — copyable code
Copyfrom flask import Flask, request, abort
import hmac, hashlib, json, os
app = Flask(__name__)
SECRET = os.environ.get('WEBHOOK_SECRET', 'replace-me').encode('utf-8')
def verify_sig(payload, signature):
mac = hmac.new(SECRET, payload, hashlib.sha256).hexdigest()
return hmac.compare_digest(mac, signature)
@app.route('/webhook', methods=['POST'])
def webhook():
sig = request.headers.get('X-Signature', '')
payload = request.get_data()
if not verify_sig(payload, sig):
abort(401)
data = json.loads(payload)
# enqueue for background processing (Celery/RQ/etc.)
print('Received alert:', data)
return '', 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))
Deployment tips
- Run behind HTTPS (nginx or managed platform) and keep secrets in env vars.
- Use worker queues for long-running tasks to keep webhook responses fast.
License: MIT
