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

PythonAnywhere部署Telegram AI机器人连接OpenAI失败求助

PythonAnywhere部署Telegram机器人连接OpenAI失败的解决办法

问题现象

在PythonAnywhere上部署对接OpenAI的Telegram机器人后,发送消息机器人返回:Failed to get response: ⚠️ 发生错误 ⚠️ 与OpenAI通信出错,控制台抛出ConnectionRefusedError,无法连接api.openai.com:443。

控制台错误日志(翻译后)

(venv) 12:12 ~/chatGpt $ python bot/main.py
2023-03-28 12:12:17,690 - telegram.ext._application - INFO - 应用已启动
(向Telegram机器人发送消息后,机器人回复:Failed to get response: ⚠️ 发生错误 ⚠️ 与OpenAI通信出错)
2023-03-28 12:12:24,197 - root - INFO - 收到用户@fr1day_pon的新消息
2023-03-28 12:12:24,991 - root - ERROR - ⚠️ <em>发生错误</em> ⚠️ 与OpenAI通信出错
回溯(最近的调用最后):
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/aiohttp/connector.py",第980行,在_wrap_create_connection中
返回 await self._loop.create_connection(*args, **kwargs)  # type: ignore[return-value]  # noqa
文件"/usr/local/lib/python3.10/asyncio/base_events.py",第1064行,在create_connection中
引发 exceptions[0]
文件"/usr/local/lib/python3.10/asyncio/base_events.py",第1049行,在create_connection中
sock = await self._connect_sock(
文件"/usr/local/lib/python3.10/asyncio/base_events.py",第960行,在_connect_sock中
await self.sock_connect(sock, address)
文件"/usr/local/lib/python3.10/asyncio/selector_events.py",第500行,在sock_connect中
返回 await fut
文件"/usr/local/lib/python3.10/asyncio/selector_events.py",第535行,在_sock_connect_cb中
引发 OSError(err, f'连接调用失败 {address}')
ConnectionRefusedError: [Errno 111] 连接调用失败 ('52.152.96.252', 443)

上述异常直接导致以下异常:

回溯(最近的调用最后):
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/openai/api_requestor.py",第587行,在arequest_raw中
result = await session.request(**request_kwargs)
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/aiohttp/client.py",第536行,在_request中
conn = await self._connector.connect(
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/aiohttp/connector.py",第540行,在connect中
proto = await self._create_connection(req, traces, timeout)
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/aiohttp/connector.py",第901行,在_create_connection中
_, proto = await self._create_direct_connection(req, traces, timeout)
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/aiohttp/connector.py",第1206行,在_create_direct_connection中
引发 last_exc
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/aiohttp/connector.py",第1175行,在_create_direct_connection中
transp, proto = await self._wrap_create_connection(
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/aiohttp/connector.py",第988行,在_wrap_create_connection中
引发 client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: 无法连接到主机api.openai.com:443 ssl:default [连接调用失败 ('52.152.96.252', 443)]
上述异常直接导致以下异常:
回溯(最近的调用最后):
文件"/home/irore6688/chatGpt/bot/openai_helper.py",第133行,在__common_get_chat_response中
返回 await openai.ChatCompletion.acreate(
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/openai/api_resources/chat_completion.py",第45行,在acreate中
返回 await super().acreate(*args, **kwargs)
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/openai/api_resources/abstract/engine_api_resource.py",第217行,在acreate中
response, _, api_key = await requestor.arequest(
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/openai/api_requestor.py",第300行,在arequest中
result = await self.arequest_raw(
文件"/home/irore6688/chatGpt/venv/lib/python3.10/site-packages/openai/api_requestor.py",第604行,在arequest_raw中
引发 error.APIConnectionError("与OpenAI通信出错") from e
openai.error.APIConnectionError: 与OpenAI通信出错
上述异常直接导致以下异常:
回溯(最近的调用最后):
文件"/home/irore6688/chatGpt/bot/telegram_bot.py",第358行,在prompt中
async for content, tokens in stream_response:
文件"/home/irore6688/chatGpt/bot/openai_helper.py",第82行,在get_chat_response_stream中
response = await self.__common_get_chat_response(chat_id, query, stream=True)
文件"/home/irore6688/chatGpt/bot/openai_helper.py",第151行,在__common_get_chat_response中
引发 Exception(f'⚠️ <em>发生错误</em> ⚠️\n{str(e)}') from e
Exception: ⚠️ <em>发生错误</em> ⚠️ 与OpenAI通信出错

解决办法

1. 配置PythonAnywhere内置代理

PythonAnywhere免费/基础账户无法直接访问OpenAI,需通过其内置代理转发请求:

  • 在代码中设置OpenAI代理:
import openai

# 设置PythonAnywhere代理
openai.proxy = "http://proxy.pythonanywhere.com:3128"
# 初始化API密钥
openai.api_key = "你的OpenAI API密钥"
  • 或在启动机器人前设置环境变量:
export HTTP_PROXY=http://proxy.pythonanywhere.com:3128
export HTTPS_PROXY=http://proxy.pythonanywhere.com:3128

2. 替换OpenAI API镜像地址

若代理无效,可使用第三方OpenAI镜像API,替换代码中的API基础地址:

import openai

openai.api_base = "https://api.openai-proxy.com/v1"  # 替换为可用的镜像地址
openai.api_key = "你的OpenAI API密钥"

注意选择稳定且支持ChatCompletion接口的镜像。

3. 验证OpenAI API密钥有效性

虽然日志显示连接错误,但仍需确认密钥状态:
在PythonAnywhere控制台执行测试代码:

import openai
openai.api_key = "你的API密钥"
openai.proxy = "http://proxy.pythonanywhere.com:3128"  # 配合代理使用

try:
    resp = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": "测试消息"}]
    )
    print(resp.choices[0].message.content)
except Exception as e:
    print(f"错误信息:{e}")

若返回权限/余额错误,需检查密钥权限或充值;若仍为连接错误,继续排查网络问题。

4. 升级PythonAnywhere账户

免费账户存在外部API访问限制,若上述方法均无效,可升级到付费账户,付费账户无网络访问限制,可直接连接OpenAI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:27:07