美文网首页
Scrapy多环境根据测试、生产环境选择不同的配置文件

Scrapy多环境根据测试、生产环境选择不同的配置文件

作者: 佑岷 | 来源:发表于2019-07-31 14:12 被阅读0次

scrapy.cfg中的[settings]可以更改default=[projectname].settings的默认配置文件指向,若想要在项目运行时根据不同环境自动加载不同配置,需要做一些环境配置:

 [settings]                                                                               
 default = cprice.settings                                                                
 prd = cprice.settings 

撸下scrapy配置相关源码:

def init_env(project='default', set_syspath=True):
    """Initialize environment to use command-line tool from inside a project
    dir. This sets the Scrapy settings module and modifies the Python path to
    be able to locate the project module.
    """
    cfg = get_config()
    if cfg.has_option('settings', project):
        os.environ['SCRAPY_SETTINGS_MODULE'] = cfg.get('settings', project)
    closest = closest_scrapy_cfg()
    if closest:
        projdir = os.path.dirname(closest)
        if set_syspath and projdir not in sys.path:
            sys.path.append(projdir)

def get_project_settings():
    if ENVVAR not in os.environ:
        project = os.environ.get('SCRAPY_PROJECT', 'default')
        init_env(project)

    settings = Settings()
    settings_module_path = os.environ.get(ENVVAR)
    if settings_module_path:
        settings.setmodule(settings_module_path, priority='project')
    
    # XXX: remove this hack 
    pickled_settings = os.environ.get("SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE")
    if pickled_settings:
        settings.setdict(pickle.loads(pickled_settings), priority='project')

    # XXX: deprecate and remove this functionality
    env_overrides = {k[7:]: v for k, v in os.environ.items() if
                     k.startswith('SCRAPY_')}
    if env_overrides:
        settings.setdict(env_overrides, priority='project')
return settings

可知当环境变量中无:SCRAPY_PROJECT/SCRAPY_SETTINGS_MODULE时,会默认读取default settings
分别尝试设置SCRAPY_PROJECT、SCRAPY_SETTINGS_MODULE参数:
export SCRAPY_PROJECT=xxxx时,xxxx是scrapy.cfg[settings]中定义的key;
export SCRAPY_SETTINGS_MODULE设置起来比较复杂,感兴趣的可以去试下。

=============================================================

因此想做参数根据环境自动选择的需要三步操作:

  1. 新建settings.py文件,例如prd_settings.py;
  2. scrapy.cfg→[settings]中添加新增的settings.py文件名,例如:prd=[projectname].prd_settings;
  3. export SCRAPY_PROJECT=prd;scrapy crawl spidername。
    即可

相关文章

  • Scrapy多环境根据测试、生产环境选择不同的配置文件

    scrapy.cfg中的[settings]可以更改default=[projectname].settings的...

  • springboot部署测试环境和生产环境

    我们在日常开发工作经常会根据不同的项目运行环境,添加不同的配置文件,例如:开发环境,测试环境,生产环境等。配置sp...

  • 8.Vue3.0配置不同环境

    一、创建不同环境的配置文件 一般有开发环境、生产环境、测试环境 在根目录下面分别创建 .env.developme...

  • React 不同的环境打包不同的域名

    在开发中,常见的现象:生产环境、测试环境、开发环境的域名都不同,怎样去根据不同的环境需求打包不同的域名呢? 方案一...

  • 基于Python的接口自动化测试(1)

    封装接口请求requests 使用配置文件切换测试环境、预发环境、生产环境 config.ini 配置文件读取 ...

  • Flutter 多渠道打包实践

    背景   在原生开发中经常要根据不同的渠道打不同的包,主要有以下场景: 开发环境、测试环境、生产环境等   不同的...

  • Postman变量设置

    在开发不同阶段可能存在不同的环境,比如测试环境和生产环境。因为测试环境和生产环境的url肯定是不同的。在这种情况下...

  • maven 打包区分环境

    在大型的项目组中,分不同的开发环境,测试环境,生产环境(说白了就是配置文件不同,或者数据源,或者服务器,或者数据库...

  • Maven多环境配置

    一、什么是Maven多环境配置? ** 在开发的过程中,经常需要面对不同的运行环境(开发环境、测试环境、生产环境、...

  • postman的环境

    如何在postman中创建环境: 创建多套环境 环境可以有多套:开发,测试,生产 使用指定环境 在左上角选择对应的...

网友评论

      本文标题:Scrapy多环境根据测试、生产环境选择不同的配置文件

      本文链接:https://www.haomeiwen.com/subject/ojezrctx.html