def get_posts() -> Any: args = parse_args(Config.ARGS, request.args) valid, message = validate_args(Config.ARGS, args) if not valid: return make_response(jsonify({"error": message}), 400) if args["update"] == "sync": logger.info("sync update requested") Post.fetch_all(Config) logger.info("sync update done") if args["update"] == "async": logger.info("async update requested") redis_conn = Redis(host=Config.REDIS_HOST, port=Config.REDIS_PORT, db=Config.REDIS_DB) q = Queue(connection=redis_conn) # no args implies the default queue job = q.enqueue(Post.fetch_all, Config) logger.info(f"job for async update issued, job id: {job.id}") return make_response( jsonify({"message": f"update requested, job id: {job.id}"}), 200) query = Post.query_posts( sort=args["sort"], order=args["order"], limit=args["limit"], offset=args["offset"], ) return make_response(jsonify([p.to_dict() for p in query]), 200)