我正试着用云运行让一台破烂的刮刀工作。其主要思想是,每隔20分钟,云调度器cron就会触发网络刮取器,并从不同的站点获取数据。所有站点都有相同的结构,所以我想使用相同的代码并并行执行抓取作业,执行类似scrapy crawl scraper -a site=www.site1.com
和scrapy crawl scraper -a site=www.site2.com
的操作。
我已经部署了一个版本的刮板,但它只能做scrapy crawl scraper
。如何才能在执行命令的站点更改时做到这一点?
另外,我应该使用云运行作业还是服务?
2条答案
按热度按时间mwg9r5ms1#
没有直接的办法。
Cloud Scheduler可以使用参数调用您的应用程序,但您需要为每组参数创建一个新作业。
Cloud Run支持环境变量,但您需要重新部署您的应用程序才能修改它们。
您可以将应用程序的参数存储在Secret Manager或云存储中。然后,您的应用程序将从其中一个位置读取当前配置。
umuewwlo2#
根据那个page of documentation,有一个诡计。
CLOUD_RUN_TASK_INDEX
环境变量。该变量表示执行中的任务编号。对于每个不同的数字,在您的网站文件中选择一行(该行的编号等于env var值)。这样,您就可以利用云运行作业和并行性。
这里的主要权衡是要废弃的网站列表的静态形式。