在heroku上托管python电报机器人

时间:2016-06-01 14:20:32

标签: python heroku telegram-bot

我有一个.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文件并让它成为?

1 个答案:

答案 0 :(得分:3)

也许你必须把Procfile这样的字符串放进去:

web: python web.py

其中web.py是您脚本的名称。

同时检查包含所有依赖项的requirements.txt文件。请看这篇文章on Heroku Dev Center

部署代码后运行您的应用程序,如果有错误 - 请检查您的Heroku日志。您可以点击右侧角落More - >中的按钮查看Heroku信息中心的日志。 View logs