如何使用Web流程将任务添加到作业队列中以将Flask App部署到Heroku

如何解决如何使用Web流程将任务添加到作业队列中以将Flask App部署到Heroku

在Heroku中运行Flask应用时出现此错误

UnicodeError: label empty or too long
2020-08-31T04:37:51.710930+00:00 app[web.1]: 
2020-08-31T04:37:51.710931+00:00 app[web.1]: The above exception was the direct cause of the following exception:
2020-08-31T04:37:51.710931+00:00 app[web.1]: 
2020-08-31T04:37:51.710932+00:00 app[web.1]: Traceback (most recent call last):
2020-08-31T04:37:51.710932+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",line 2447,in wsgi_app
2020-08-31T04:37:51.710932+00:00 app[web.1]: response = self.full_dispatch_request()
2020-08-31T04:37:51.710933+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",line 1952,in full_dispatch_request
2020-08-31T04:37:51.710933+00:00 app[web.1]: rv = self.handle_user_exception(e)
2020-08-31T04:37:51.710934+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",line 1821,in handle_user_exception
2020-08-31T04:37:51.710934+00:00 app[web.1]: reraise(exc_type,exc_value,tb)
2020-08-31T04:37:51.710935+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py",line 39,in reraise
2020-08-31T04:37:51.710935+00:00 app[web.1]: raise value
2020-08-31T04:37:51.710936+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",line 1950,in full_dispatch_request
2020-08-31T04:37:51.710936+00:00 app[web.1]: rv = self.dispatch_request()
2020-08-31T04:37:51.710936+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",line 1936,in dispatch_request
2020-08-31T04:37:51.710937+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2020-08-31T04:37:51.710937+00:00 app[web.1]: File "/app/app/app.py",line 109,in predict
2020-08-31T04:37:51.710937+00:00 app[web.1]: job = predictHelper.delay(request)
2020-08-31T04:37:51.710938+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/rq/decorators.py",line 68,in delay
2020-08-31T04:37:51.710938+00:00 app[web.1]: retry=self.retry)
2020-08-31T04:37:51.710939+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/rq/queue.py",line 365,in enqueue_call
2020-08-31T04:37:51.710939+00:00 app[web.1]: job = self.enqueue_job(job,at_front=at_front)
2020-08-31T04:37:51.710940+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/rq/queue.py",line 473,in enqueue_job
2020-08-31T04:37:51.710940+00:00 app[web.1]: job.save(pipeline=pipe)
2020-08-31T04:37:51.710940+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/rq/job.py",line 585,in save
2020-08-31T04:37:51.710941+00:00 app[web.1]: if self.get_redis_server_version() >= StrictVersion("4.0.0"):
2020-08-31T04:37:51.710941+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/rq/job.py",line 593,in get_redis_server_version
2020-08-31T04:37:51.710942+00:00 app[web.1]: self.redis_server_version = get_version(self.connection)
2020-08-31T04:37:51.710942+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/rq/utils.py",line 260,in get_version
2020-08-31T04:37:51.710942+00:00 app[web.1]: version_string = connection.info("server")["redis_version"]
2020-08-31T04:37:51.710943+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/redis/client.py",line 1306,in info
2020-08-31T04:37:51.710943+00:00 app[web.1]: return self.execute_command('INFO',section)
2020-08-31T04:37:51.710943+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/redis/client.py",line 898,in execute_command
2020-08-31T04:37:51.710944+00:00 app[web.1]: conn = self.connection or pool.get_connection(command_name,**options)
2020-08-31T04:37:51.710944+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/redis/connection.py",line 1192,in get_connection
2020-08-31T04:37:51.710945+00:00 app[web.1]: connection.connect()
2020-08-31T04:37:51.710945+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/redis/connection.py",line 559,in connect
2020-08-31T04:37:51.710945+00:00 app[web.1]: sock = self._connect()
2020-08-31T04:37:51.710946+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/redis/connection.py",in _connect
2020-08-31T04:37:51.710946+00:00 app[web.1]: socket.soCK_STREAM):
2020-08-31T04:37:51.710947+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/socket.py",line 745,in getaddrinfo
2020-08-31T04:37:51.710947+00:00 app[web.1]: for res in _socket.getaddrinfo(host,port,family,type,proto,flags):
2020-08-31T04:37:51.711035+00:00 app[web.1]: UnicodeError: encoding with 'idna' codec Failed (UnicodeError: label empty or too long)

这是它源自的文件

Imports...

    rc = Redis("redis://h:pd241196cb1174dbb206aa362d31e525b14e5c8e18cce3c2917539c149ca7365e@ec2-3-94-63-99.compute-1.amazonaws.com:25779") #create redis connection for the queue
    
    @job('low',connection=rc,timeout=900)
    def predictHelper(request):
        if request.method == 'POST':
            #request stock ticker that user inputs
            ticker = request.form['ticker']
            (computation for rest of function)...
            return data

@app.route('/predict',methods=['POST'])
def predict():
    job = predictHelper.delay(request)
    time.sleep(900)
    data = job.result
    return render_template('index.html',prediction_text="Text message with the predicted "+str(data)+" stock price for tomorrow has been sent!")

我正在尝试在我的Heroku Web进程中使用python-rq实现后台工作程序。我不确定是否需要为此使用Heroku worker进程。预测函数执行需要15分钟,因此这就是为什么我添加后台工作程序的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?