File size: 1,343 Bytes
123f3e2
ab755b3
 
123f3e2
 
 
ab755b3
 
 
123f3e2
ab755b3
 
 
123f3e2
ab755b3
 
123f3e2
ab755b3
123f3e2
 
ab755b3
123f3e2
 
 
 
ab755b3
 
afdde10
ab755b3
 
 
 
 
 
 
 
 
 
 
 
 
afdde10
ab755b3
123f3e2
 
 
 
ab755b3
 
123f3e2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import logging
from flask import Flask
from flask_apscheduler import APScheduler
from asgiref.wsgi import WsgiToAsgi

from routes.main import bp
from main import main as data_collection_main

class Config:
    SCHEDULER_API_ENABLED = True  # Enables the scheduler's API

def create_app():
    # Create the Flask application
    flask_app = Flask(__name__)
    
    # Load config for APScheduler
    flask_app.config.from_object(Config())
    
    # Register our Blueprint 
    flask_app.register_blueprint(bp)
    
    logging.basicConfig(
        format='%(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
    logging.getLogger().setLevel(logging.ERROR)

    # Initialize the APScheduler
    scheduler = APScheduler()
    scheduler.init_app(flask_app)
    
    # Schedule a cron job to run main() every day at 16:00
    @scheduler.task('cron', id='daily_data_collection', hour=16, minute=0)
    def scheduled_data_collection():
        """
        This function runs automatically every day at 16:00 server time.
        It calls the Prefect flow defined in 'main.py' to collect data.
        """
        data_collection_main()
    
    # Start the scheduler
    scheduler.start()
    
    return flask_app

app = create_app()

asgi_app = WsgiToAsgi(app)

if __name__ == '__main__':
    # Create the Flask app and run it
   app.run()