我有一个.py
文件,其中包含一些运行telegram bot
的代码,它可以在我的本地计算机上运行正常但是当我将代码推送到heroku
时它不起作用,我表示文件没有运行来接收和发送消息,但是当我在heroku
中输入bash并手动运行.py
文件时,它工作正常。
我在Procfile
中应用了一些更改,但我不知道如何告诉heroku
自动运行.py
文件。
我还尝试将我的bot
代码包装在一个烧瓶应用程序中,然后它在本地机器上运行完美,但在heroku
烧瓶请求成功处理但代码中的机器人无法再次运行。
这是代码:
from flask import Flask
import time
import os
import telepot
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, Column, Integer, PickleType, String
from sqlalchemy.orm import sessionmaker
from flask.ext.heroku import Heroku
app = Flask(__name__)
app.config['SECRET_KEY'] = "random string"
heroku = Heroku(app)
@app.route('/') # the requests handled successfully!
def hello_world():
return 'Hello World!'
# the bot code deleted to simplify
uri = os.environ.get('DATABASE_URL')
engine = create_engine(uri)
Base = declarative_base()
if __name__ == '__main__':
Base.metadata.create_all(engine)
global session
Session = sessionmaker(bind=engine)
session = Session()
TOKEN = 'token'
bot = MyBot(TOKEN) # the bot stuff here
bot.message_loop() # but the bot stuff just doesn't work
# i also removed incoming 2 lines and let it be the default but has no effect
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)
while 1:
time.sleep(10)
engine.dispose()
我检查了heroku
的日志没有错误,但bot
代码不起作用。
那么“烧瓶包裹”bot
中的问题是什么?我怎样才能简单地告诉heroku
运行python文件并让它成为?
答案 0 :(得分:3)
也许你必须把Procfile
这样的字符串放进去:
web: python web.py
其中web.py
是您脚本的名称。
同时检查包含所有依赖项的requirements.txt
文件。请看这篇文章on Heroku Dev Center。
部署代码后运行您的应用程序,如果有错误 - 请检查您的Heroku日志。您可以点击右侧角落More
- >中的按钮查看Heroku信息中心的日志。 View logs
。