如何在Heroku中运行后台任务?

问题描述

我已经构建了一个python应用程序,并使用FlaskPython进行了部署。这是我代码的Skelton。

#app.py
@app.route('/',methods=['GET'])
def login():
    '''login process'''

@app.route('/reset-password',methods=['GET'])
def reset_password():
    '''reset password process'''

@app.route('/add-psa',methods=['GET'])
def add_user():
    '''add user process'''

if __name__ == '__main__':
    app.debug = True
    app.run(use_reloader=False,threaded=True)

已部署的应用程序在Heroku中工作正常。但有时需要30秒钟以上才能做出响应,根据Heroku doc,这意味着H12 error。因此,我按照this教程进行了后台作业。 这是我到目前为止所做的

#worker.py
import os

import redis
from rq import Worker,Queue,Connection

listen = ['high','default','low']

redis_url = os.getenv('REDISTOGO_URL','redis://localhost:6379')

conn = redis.from_url(redis_url)

if __name__ == '__main__':
    with Connection(conn):
        worker = Worker(map(Queue,listen))
        worker.work()

下一步...

#utils.py
import requests

def count_words_at_url(url):
    resp = requests.get(url)
    return len(resp.text.split())

我还更改了Procfilerequirements.txt

我想在后台运行我的reset_password(),因为它花费的时间超过30seconds。有人可以帮助我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)