You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在PythonAnywhere的Flask调用APScheduler API失败求助

Flask部署PythonAnywhere后APScheduler API调用无限加载崩溃问题

将Flask应用部署到PythonAnywhere后,调用APScheduler的外部API接口/scheduler/jobs出现故障——请求会无限加载,最终导致整个网站崩溃,但该功能在本地环境完全正常。

已配置的CORS设置

在app.py中配置了CORS以允许PythonAnywhere域名:

# app.py
# 导入及Flask应用初始化...
cors = CORS(app)

@app.after_request
def add_cors_headers(response):
    response.headers['Access-Control-Allow-Origin'] = 'https://<username>.pythonanywhere.com'
    return response
# 其余代码...

测试验证

在PythonAnywhere的bash中执行curl -X GET http://<username>.pythonanywhere.com/scheduler/jobs能成功获取结果,Postman请求也正常。

代码排查结果

取消requests.get()的注释后功能立即失效,且无相关错误日志:

@api_bp.route('/jobs_details', methods=['GET'])
def get_jobs_details():
    jobs_data = fetch_scheduler_jobs(request)

def fetch_scheduler_jobs(request):
    # 从内置API获取数据
    base_url = request.host_url.rstrip('/')
    url = f"{base_url}/scheduler/jobs"
    headers = dict(request.headers)
    # response = requests.get(url, headers=headers)
    return headers

临时修复尝试及错误

尝试用subprocess调用curl替代requests.get(),但无法正常工作:

def make_curl_request(url, headers=None):
    """
        替代`requests.get(url, headers=headers)`的临时修复方案
        :param url:
        :param headers:
        :return:
    """
    command = ['curl', '-X', 'GET']
    if headers:
        for header in headers:
            command.extend(['-H', header])
    command.append(url)
    result = subprocess.run(command, capture_output=True, text=True)
    response_body = result.stdout
    response_dict = json.loads(response_body)
    return response_dict


def fetch_scheduler_jobs(request_obj):
    # 从内置API获取数据
    base_url = request_obj.host_url.rstrip('/')
    url = f"{base_url}/scheduler/jobs"
    headers = [f"{key}: {value}" for key, value in request_obj.headers.items()]
    response = make_curl_request(url, headers=headers)
    return response

对应的错误日志:

2023-06-18 19:35:37,209: Exception on /api/jobs_details [GET]
Traceback (most recent call last):
  File "/home/<usernam>/.virtualenvs/my-virtualenv/lib/python3.10/site-packages/flask/app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/<usernam>/.virtualenvs/my-virtualenv/lib/python3.10/site-packages/flask/app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/<usernam>/.virtualenvs/my-virtualenv/lib/python3.10/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/<usernam>/.virtualenvs/my-virtualenv/lib/python3.10/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/<usernam>/.virtualenvs/my-virtualenv/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/<usernam>/.virtualenvs/my-virtualenv/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/home/<usernam>/<projname>/api/routes.py", line 29, in get_jobs_details
    jobs_data = fetch_scheduler_jobs(request)  # TODO 1. deployment bug
  File "/home/<usernam>/<projname>/api/api_utils.py", line 39, in fetch_scheduler_jobs
    response = make_curl_request(url, headers=headers)
  File "/home/<usernam>/<projname>/api/api_utils.py", line 30, in make_curl_request
    response_dict = json.loads(response_body)
  File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

注:make_curl_request()的错误为临时方案的问题,核心问题是使用requests.get()调用API时出现无限加载并导致网站崩溃。

内容的提问来源于stack exchange,提问作者Silcrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:37:05