Flask 启动电报bot的问题

Flask 启动电报bot的问题,flask,python-requests,openssl,pythonanywhere,py-telegram-bot-api,Flask,Python Requests,Openssl,Pythonanywhere,Py Telegram Bot Api,我正试图把我的电报机器人部署到蟒蛇身上。免费账户运作良好,但付费账户存在一些问题。我在错误日志中收到“OpenSSL.SSL.Error:[('SSL例程','ssl3_get_记录','decryption failed or bad record mac')]”消息(因此bot工作错误)。我如何解决它? 我正在使用python3.7+PythonAPI+烧瓶 错误再现的代码示例: # coding=utf-8 import telebot import flask import time

我正试图把我的电报机器人部署到蟒蛇身上。免费账户运作良好,但付费账户存在一些问题。我在错误日志中收到“OpenSSL.SSL.Error:[('SSL例程','ssl3_get_记录','decryption failed or bad record mac')]”消息(因此bot工作错误)。我如何解决它?
我正在使用python3.7+PythonAPI+烧瓶

错误再现的代码示例:

# coding=utf-8
import telebot
import flask
import time


token = 'bot_token'
bot = telebot.TeleBot(token, threaded=False)

WEBHOOK_HOST = '*userName*.pythonanywhere.com'
WEBHOOK_URL_BASE = "https://%s" % (WEBHOOK_HOST)
WEBHOOK_URL_PATH = "/%s/" % (token)

app = flask.Flask(__name__)

# Process webhook calls
@app.route(WEBHOOK_URL_PATH, methods=['POST'])
def webhook():
    if flask.request.headers.get('content-type') == 'application/json':
        json_string = flask.request.get_data().decode('utf-8')
        update = telebot.types.Update.de_json(json_string)
        bot.process_new_updates([update])
        return ''
    else:
        flask.abort(403)

@bot.message_handler(commands=['start', 'help'])
def handle_start_help(message):
        bot.send_message(message.chat.id, text="Hello, my friend")

bot.remove_webhook()
time.sleep(0.1)
bot.set_webhook(url=WEBHOOK_URL_BASE + WEBHOOK_URL_PATH)
完整错误跟踪:

2018-10-30 12:40:33,351: Exception on /*token*/ [POST]
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python3.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python3.7/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/usr/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/kleratoni/bot/bot/Main.py", line 90, in webhook
    bot.process_new_updates([update])
  File "/home/*accountName*/.local/lib/python3.7/site-packages/telebot/__init__.py", line 326, in process_new_updates
    self.process_new_callback_query(new_callback_querys)
  File "/home/*accountName*/.local/lib/python3.7/site-packages/telebot/__init__.py", line 354, in process_new_callback_query
    self._notify_command_handlers(self.callback_query_handlers, new_callback_querys)
  File "/home/*accountName*/.local/lib/python3.7/site-packages/telebot/__init__.py", line 1490, in _notify_command_handlers
    self._exec_task(message_handler['function'], message)
  File "/home/*accountName*/.local/lib/python3.7/site-packages/telebot/__init__.py", line 464, in _exec_task
    task(*args, **kwargs)
  File "/home/*accountName*/bot/bot/Main.py", line 535, in callback_inline
    MainMenuActions.BetMenu_BackButton(call.message, bot, db)
  File "/home/*accountName*/bot/bot/MainMenuActions.py", line 130, in BetMenu_BackButton
    bot.send_message(message.chat.id, text=config.StringContent["StartPlayWords"], reply_markup=keyborads.keyboardMainmenu)
  File "/home/*accountName*/.local/lib/python3.7/site-packages/telebot/__init__.py", line 598, in send_message
    reply_markup, parse_mode, disable_notification))
  File "/home/*accountName*/.local/lib/python3.7/site-packages/telebot/apihelper.py", line 140, in send_message
    return _make_request(token, method_url, params=payload, method='post')
  File "/home/*accountName*/.local/lib/python3.7/site-packages/telebot/apihelper.py", line 54, in _make_request
    timeout=(connect_timeout, read_timeout), proxies=proxy)
  File "/usr/lib/python3.7/site-packages/requests/sessions.py", line 512, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3.7/site-packages/requests/sessions.py", line 622, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3.7/site-packages/requests/adapters.py", line 445, in send
    timeout=timeout
  File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/lib/python3.7/http/client.py", line 1321, in getresponse
    response.begin()
  File "/usr/lib/python3.7/http/client.py", line 296, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.7/http/client.py", line 257, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.7/socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.7/site-packages/urllib3/contrib/pyopenssl.py", line 300, in recv_into
    return self.recv_into(*args, **kwargs)
  File "/usr/lib/python3.7/site-packages/urllib3/contrib/pyopenssl.py", line 285, in recv_into
    return self.connection.recv_into(*args, **kwargs)
  File "/usr/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1814, in recv_into
    self._raise_ssl_error(self._ssl, result)
  File "/usr/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1639, in _raise_ssl_error
    _raise_current_error()
  File "/usr/lib/python3.7/site-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue
    raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'ssl3_get_record', 'decryption failed or bad record mac')]
2018-10-30 12:40:33351:在/*token*/[POST]上出现异常
回溯(最近一次呼叫最后一次):
wsgi_应用程序中的文件“/usr/lib/python3.7/site packages/flask/app.py”,第2292行
response=self.full\u dispatch\u request()
文件“/usr/lib/python3.7/site packages/flask/app.py”,第1815行,完整发送请求
rv=自身处理用户异常(e)
文件“/usr/lib/python3.7/site packages/flask/app.py”,第1718行,在handle\u user\u异常中
重放(exc_类型、exc_值、tb)
文件“/usr/lib/python3.7/site packages/flask/_compat.py”,第35行,重新登录
增值
文件“/usr/lib/python3.7/site packages/flask/app.py”,第1813行,完整发送请求
rv=自我分派请求()
文件“/usr/lib/python3.7/site packages/flask/app.py”,第1799行,在调度请求中
返回self.view_函数[rule.endpoint](**req.view_参数)
文件“/home/kleratoni/bot/bot/Main.py”,第90行,在webhook中
bot.process\u new\u updates([更新])
文件“/home/*accountName*/.local/lib/python3.7/site packages/telebot/_init__.py”,第326行,正在更新
self.process\u new\u callback\u查询(new\u callback\u querys)
文件“/home/*accountName*/.local/lib/python3.7/site packages/telebot/_init__.py”,第354行,进程中的新回调查询
self.\u通知\u命令\u处理程序(self.callback\u查询\u处理程序、新的\u回调\u查询)
文件“/home/*accountName*/.local/lib/python3.7/site packages/telebot/_init__.py”,第1490行,在命令处理程序中
self._exec_任务(消息处理程序['function'],消息)
文件“/home/*accountName*/.local/lib/python3.7/site packages/telebot/_init__.py”,第464行,在执行任务中
任务(*args,**kwargs)
文件“/home/*accountName*/bot/bot/Main.py”,第535行,在callback\u inline中
MainMenuActions.BetMenu\u BackButton(call.message、bot、db)
文件“/home/*accountName*/bot/bot/MainMenuActions.py”,第130行,在BetMenu_BackButton中
bot.send_message(message.chat.id,text=config.StringContent[“StartPlayWords”],reply_markup=keyborads.keyboardmain菜单)
文件“/home/*accountName*/.local/lib/python3.7/site packages/telebot/_init__.py”,第598行,在发送消息中
回复(标记、解析(模式、禁用通知))
文件“/home/*accountName*/.local/lib/python3.7/site packages/telebot/apihelper.py”,第140行,在发送消息中
return _make_request(令牌、方法url、参数=payload、方法=post)
文件“/home/*accountName*/.local/lib/python3.7/site packages/telebot/apihelper.py”,第54行,在请求中
超时=(连接超时,读取超时),代理服务器=代理服务器)
文件“/usr/lib/python3.7/site packages/requests/sessions.py”,请求中的第512行
resp=自我发送(准备,**发送)
文件“/usr/lib/python3.7/site packages/requests/sessions.py”,第622行,在send中
r=适配器.send(请求,**kwargs)
文件“/usr/lib/python3.7/site packages/requests/adapters.py”,第445行,在send中
超时=超时
文件“/usr/lib/python3.7/site packages/urllib3/connectionpool.py”,第600行,在urlopen中
分块=分块)
文件“/usr/lib/python3.7/site packages/urllib3/connectionpool.py”,第384行,在请求中
六、从(e,无)中提高
文件“”,第2行,从
文件“/usr/lib/python3.7/site packages/urllib3/connectionpool.py”,第380行,在请求中
httplib_response=conn.getresponse()
getresponse中的文件“/usr/lib/python3.7/http/client.py”,第1321行
response.begin()
文件“/usr/lib/python3.7/http/client.py”,第296行,在begin中
版本、状态、原因=self.\u读取\u状态()
文件“/usr/lib/python3.7/http/client.py”,第257行,处于读取状态
line=str(self.fp.readline(_MAXLINE+1),“iso-8859-1”)
readinto中的文件“/usr/lib/python3.7/socket.py”,第589行
返回自我。将袜子重新放入(b)
文件“/usr/lib/python3.7/site packages/urllib3/contrib/pyopenssl.py”,第300行,在recv_中
将self.recv_返回(*args,**kwargs)
文件“/usr/lib/python3.7/site packages/urllib3/contrib/pyopenssl.py”,第285行,在recv_中
将self.connection.recv_返回(*args,**kwargs)
文件“/usr/lib/python3.7/site packages/OpenSSL/SSL.py”,第1814行,在recv_中
self.\u raise\u ssl\u错误(self.\u ssl,结果)
文件“/usr/lib/python3.7/site-packages/OpenSSL/SSL.py”,第1639行,出现错误
_引发当前错误()
文件“/usr/lib/python3.7/site packages/OpenSSL/_util.py”,第54行,在错误队列的异常中
引发异常类型(错误)
OpenSSL.SSL.Error:[('SSL例程','ssl3_获取_记录','decryption failed or bad record mac')]

从pyTelegramBotAPI github repo上的一个问题来看,您正在使用的请求版本和您正在使用的OpenSSL版本之间似乎不兼容。尝试改用requests 2.10.0。

我也有同样的错误,我这样修复了它

token='bot\u token'
bot=telebot.telebot(令牌,线程=False)

请提供一个我已经测试过很多次的示例。这没用。只是错误文本已更改为:requests.exceptions.SSLError:[SSL:DECRYPTION\u FAILED\u或\u BAD\u RECORD\u MAC]解密失败或BAD RECORD MAC(_SSL.c:2281)我已降级为“初学者”帐户,它工作正常。但我需要更多的“CPU时间”和磁盘可用空间。当你说它在降级时有效,但在升级时无效时,你在升级时做了哪些更改。你现在正在使用你自己的自定义域名吗?@conrad,如果我没弄错的话,除了uWSGI工作人员的数量外,没有任何变化。我的项目没有自定义域o