这个月我似乎遇到了独特的情况。
我需要从 Web 读取文件并更新数据库。
我采取了两种方法:
方法1.
从应用程序本身上传值 - 这可能很耗时,我可以遇到工人超时 - 但是,我保留了这种方法 - 因为它目前需要 27-29 秒。Heroku 超时为 30 秒。
方法2.
从 Django 命令管理上传值。我已经通过 Heroku 安排了一份工作。
我使用熊猫 - pd.read_csv文件在两种方法中从网络上读取文件。
场景 1:
如果我使用方法 1,
本地主机:它工作正常
希罗库:工作正常
场景 2 :
如果我使用方法 2,
本地主机:它工作正常
Heroku:HTTP 503错误,无法读取文件
对此的解决方案是什么?
附言 - 我计划提出请求并添加浏览器标头并更新此线程。
找到答案,我将在明天 Heroku 作业运行时确认这一点。
编辑:作业工作正常,所有数据都已更新。你必须假装它:
已编辑- 第二次编辑,第二天就失败了。我正在考虑生成更多的假标题,并将发布更新。
from zipfile import BadZipFile, ZipFile
import datetime
import pandas as pd
import logging
import requests,zipfile
import io
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(url,headers=headers)
logger.info("Status code = ",r.status_code)
if r.status_code == 200:
logger.info(" Request ran successfully ")
file = zipfile.ZipFile(io.BytesIO(r.content))
myfile = file.open(filename)
stock_prices = pd.read_csv(myfile)
print(stock_prices)