@@ -189,7 +189,7 @@ def list(self, count=None, start=None, spider=None, state=None,
189189
190190 def run (self , spider = None , units = None , priority = None , meta = None ,
191191 add_tag = None , job_args = None , job_settings = None , cmd_args = None ,
192- ** params ):
192+ environment = None , ** params ):
193193 """Schedule a new job and returns its job key.
194194
195195 :param spider: a spider name string
@@ -201,6 +201,7 @@ def run(self, spider=None, units=None, priority=None, meta=None,
201201 :param job_args: (optional) a dictionary with job arguments.
202202 :param job_settings: (optional) a dictionary with job settings.
203203 :param cmd_args: (optional) a string with script command args.
204+ :param environment: (option) a dictionary with custom environment
204205 :param \*\*params: (optional) additional keyword args.
205206
206207 :return: a job instance, representing the scheduled job.
@@ -222,12 +223,15 @@ def run(self, spider=None, units=None, priority=None, meta=None,
222223 cleaned_args = {k : v for k , v in job_args .items ()
223224 if k not in params }
224225 params .update (cleaned_args )
226+ if environment and not isinstance (environment , dict ):
227+ raise ValueError ("environment should be a dictionary" )
225228
226229 params ['project' ] = self .project_id
227230 params ['spider' ] = spider or self .spider .name
228231
229232 update_kwargs (params , units = units , priority = priority , add_tag = add_tag ,
230- cmd_args = cmd_args , job_settings = job_settings , meta = meta )
233+ cmd_args = cmd_args , job_settings = job_settings , meta = meta ,
234+ environment = environment )
231235
232236 # FIXME improve to run multiple jobs
233237 try :
0 commit comments