BlankerL / DXY-COVID-19-Crawler

2019新型冠状病毒疫情实时爬虫及API | COVID-19/2019-nCoV Realtime Infection Crawler and API
https://lab.isaaclin.cn/nCoV/
MIT License
1.99k stars 400 forks source link

api 访问显示 502 Bad Gateway #42

Closed pzhaonet closed 4 years ago

pzhaonet commented 4 years ago

谢谢这个项目。非常有用。然而最近访问 api 总是出现 502 错误,不知是什么原因?

BlankerL commented 4 years ago

谢谢这个项目。非常有用。然而最近访问 api 总是出现 502 错误,不知是什么原因?

或许是API访问频率太高,uWSGI单线程无法承受这么大量的请求,所以频繁重启。加上了进程守护效果也不太理想。目前域名已经完成备案,正在着手将项目迁移至大陆服务器。

pzhaonet commented 4 years ago

谢谢答复。我是 R 语言用户,每天自动从这个 api 读一次数据,保存成 R 语言直接读取的 .RDS 格式。R 语言用户可以直接读取:

# list 格式
readRDS(gzcon(url('https://github.com/pzhaonet/travis-ncov/raw/master/data/ncov.RDS')))
# tidyverse 格式
readRDS(gzcon(url('https://github.com/pzhaonet/travis-ncov/raw/master/data/ncov_tidy.RDS')))

也许这样可以帮您分流,减轻一点访问压力。

为了简便,我开发了个 R 语言包(简介),代替上面的代码,可以方便地从 .RDS (默认)或你的 api 读数据。使用方法是:

remotes::install_github('pzhaonet/ncovr') # 安装包
require("ncovr") #加载包
get_ncov() # 读 RDS数据
get_ncov(method = 'api') # 从您的 api 读取

如果 api 访问不了,我打算增加从您的 csv 文件读取数据的功能。

此外,我做了 个网站,对您整理的数据进行可视化,目前主要是每天绘制交互地图,正在内测,地址是

更多功能正在增加中。很希望听到您的建议。

BlankerL commented 4 years ago

谢谢答复。我是 R 语言用户,每天自动从这个 api 读一次数据,保存成 R 语言直接读取的 .RDS 格式。R 语言用户可以直接读取:

# list 格式
readRDS(gzcon(url('https://github.com/pzhaonet/travis-ncov/raw/master/data/ncov.RDS')))
# tidyverse 格式
readRDS(gzcon(url('https://github.com/pzhaonet/travis-ncov/raw/master/data/ncov_tidy.RDS')))

也许这样可以帮您分流,减轻一点访问压力。

为了简便,我开发了个 R 语言包(简介),代替上面的代码,可以方便地从 .RDS (默认)或你的 api 读数据。使用方法是:

remotes::install_github('pzhaonet/ncovr') # 安装包
require("ncovr") #加载包
get_ncov() # 读 RDS数据
get_ncov(method = 'api') # 从您的 api 读取

如果 api 访问不了,我打算增加从您的 csv 文件读取数据的功能。

此外,我做了 个网站,对您整理的数据进行可视化,目前主要是每天绘制交互地图,正在内测,地址是

更多功能正在增加中。很希望听到您的建议。

万分感谢!我已经收录至README中方便其他人使用。有不少R语言的用户正在使用这个API,应该会有很大帮助!不太确定您使用的是什么环境,如果系统24小时运行,则可以将数据更新功能作为定时执行,并且定期推送至项目中。

API目前正在维护,可能会有1个小时左右的不可用时间,之后将会迁移至大陆的服务器,测试API调用时间缩短为500ms以内。

pzhaonet commented 4 years ago

定时执行没问题!我用的是 travis-CI.org 的 cron 功能,目前每天定时自动推送一次,数据放在 github 上。我就是看到 travis 给我的错误提示才发现 api 无法访问的。

我看到 BlankerL/DXY-2019-nCoV-Data 项目里的 csv 文件格式跟 api 获取的格式不完全相同(例如把 city 一列的数据拎出来跟省合并了)。我的下游代码都是建立在 api 获取数据的基础上的,为了适应 csv 就得全部修改。要是 api 很快就能用的话,我就先不费事了,等等再说。

若是收进您的 README,可以链接到 R 包的项目吗https://github.com/pzhaonet/ncovr?我会在这个项目的 README 里更新使用方法。

谢谢!

BlankerL commented 4 years ago

定时执行没问题!我用的是 travis-CI.org 的 cron 功能,目前每天定时自动推送一次,数据放在 github 上。我就是看到 travis 给我的错误提示才发现 api 无法访问的。

我看到 BlankerL/DXY-2019-nCoV-Data 项目里的 csv 文件格式跟 api 获取的格式不完全相同(例如把 city 一列的数据拎出来跟省合并了)。我的下游代码都是建立在 api 获取数据的基础上的,为了适应 csv 就得全部修改。要是 api 很快就能用的话,我就先不费事了,等等再说。

若是收进您的 README,可以链接到 R 包的项目吗https://github.com/pzhaonet/ncovr?我会在这个项目的 README 里更新使用方法。

谢谢!

API已经迁移至大陆的服务器,麻烦尝试一下访问速度是否足够。目前我测试下来,调用/nCoV/api/area接口的平均加载时间大约在300ms左右。

已经在DXY-2019-nCoV-CrawlerDXY-2019-nCoV-Data的中英文README中链接至您的GitHub项目,本项目下收录的所有项目都会链接至对应的GitHub项目的。

pzhaonet commented 4 years ago

R 语言比很多语言慢一点。我测试了一下,四个接口的时间在 300 ms 到 1 s 之间,非常满意!

> for (i in c("area", "overall", "news", "rumors")){
+   print(i)
+   start_time <- Sys.time()
+   ncov <- get_ncov('api', port = i)
+   end_time <- Sys.time()
+   print(end_time - start_time)
+ }
[1] "area"
No encoding supplied: defaulting to UTF-8.
Time difference of 1.103235 secs
[1] "overall"
No encoding supplied: defaulting to UTF-8.
Time difference of 0.3322718 secs
[1] "news"
No encoding supplied: defaulting to UTF-8.
Time difference of 0.3569241 secs
[1] "rumors"
No encoding supplied: defaulting to UTF-8.
Time difference of 0.35987 secs
BlankerL commented 4 years ago

R 语言比很多语言慢一点。我测试了一下,四个接口的时间在 300 ms 到 1 s 之间,非常满意!

> for (i in c("area", "overall", "news", "rumors")){
+   print(i)
+   start_time <- Sys.time()
+   ncov <- get_ncov('api', port = i)
+   end_time <- Sys.time()
+   print(end_time - start_time)
+ }
[1] "area"
No encoding supplied: defaulting to UTF-8.
Time difference of 1.103235 secs
[1] "overall"
No encoding supplied: defaulting to UTF-8.
Time difference of 0.3322718 secs
[1] "news"
No encoding supplied: defaulting to UTF-8.
Time difference of 0.3569241 secs
[1] "rumors"
No encoding supplied: defaulting to UTF-8.
Time difference of 0.35987 secs

/nCoV/api/area传输数据量较大,可能也会受到请求参数和网速的影响。

我已经在DXY-2019-nCoV-Data中定时推送JSON文件,防止API掉线之后大家的服务无法使用。

pzhaonet commented 4 years ago

我为网站弄了个域名并扩展了功能,展示的主要是这个项目的数据,包括 News 和 Rumors 等,地址是:

在“关于”页面将您的项目列在了“致谢”一栏。

BlankerL commented 4 years ago

我为网站弄了个域名并扩展了功能,展示的主要是这个项目的数据,包括 News 和 Rumors 等,地址是:

* https://ncov2020.org

在“关于”页面将您的项目列在了“致谢”一栏。

感谢,已经收录。

另外,我自己的博客也是基于Hugo的,所以对这个稍微有点了解。Hugo的博客生成的public文件,可以直接推送到GitHub中,由GitHub Pages来做Web Holder,然后将这个域名CNAME到GitHub的地址,则不需要自己架设额外的服务器。可以参考我的博客的项目结构。

实现方法可以参考Hugo官方文档

pzhaonet commented 4 years ago

谢谢指点!