#!/usr/bin/python3 from celery import Celery from celery.backends import sqlalchemy from flask import Flask import requests # create Flask app app = Flask(__name__) # create a Celery app celery_app = Celery('tasks') # configure the app to use the sqlalchemy backend and specify the SQLite database URL as the broker app.conf.update( result_backend='sqlalchemy', broker_url='sqlite:///celery.db', task_serializer='json', result_serializer='json', ) @celery_app.task def get_public_ip(): response = requests.get('https://ifconfig.me/ip') return response.text # define a Flask route that returns the current public IP address @app.route('/public_ip') def public_ip(): # call the get_public_ip task and wait for it to complete result = get_public_ip.delay().get() # return the task result as the response return result if __name__ == '__main__': app.run()