Changeset 2625ca8 in flex_extract.git for documentation/Sphinx/build/html/_modules/submit.html
- Timestamp:
- Jan 15, 2019, 1:03:37 AM (5 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 6f951ca
- Parents:
- 0629ba8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
documentation/Sphinx/build/html/_modules/submit.html
r274f9ef r2625ca8 171 171 <span class="c1"># - changed path names to variables from config file</span> 172 172 <span class="c1"># - added option for writing mars requests to extra file</span> 173 <span class="c1"># additionally,as option without submitting the mars jobs</span> 173 <span class="c1"># additionally, as option without submitting the mars jobs</span> 174 <span class="c1"># - splitted submit function to use genshi templates for the</span> 175 <span class="c1"># job script and avoid code duplication</span> 174 176 <span class="c1">#</span> 175 177 <span class="c1"># @License:</span> 176 <span class="c1"># (C) Copyright 2014-2018.</span> 177 <span class="c1">#</span> 178 <span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> 179 <span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> 180 <span class="c1">#</span> 181 <span class="c1"># @Program Functionality:</span> 182 <span class="c1"># This program is the main program of flex_extract and controls the</span> 183 <span class="c1"># program flow.</span> 184 <span class="c1"># If it is supposed to work locally then it works through the necessary</span> 185 <span class="c1"># functions get_mars_data and prepareFlexpart. Otherwise it prepares</span> 186 <span class="c1"># a shell job script which will do the necessary work on the</span> 187 <span class="c1"># ECMWF server and is submitted via ecaccess-job-submit.</span> 188 <span class="c1">#</span> 189 <span class="c1"># @Program Content:</span> 190 <span class="c1"># - main</span> 191 <span class="c1"># - submit</span> 192 <span class="c1">#</span> 178 <span class="c1"># (C) Copyright 2014-2019.</span> 179 <span class="c1"># Anne Philipp, Leopold Haimberger</span> 180 <span class="c1">#</span> 181 <span class="c1"># This work is licensed under the Creative Commons Attribution 4.0</span> 182 <span class="c1"># International License. To view a copy of this license, visit</span> 183 <span class="c1"># http://creativecommons.org/licenses/by/4.0/ or send a letter to</span> 184 <span class="c1"># Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.</span> 193 185 <span class="c1">#*******************************************************************************</span> 186 <span class="sd">'''This script allows the user to extract meteorological fields from the ECMWF.</span> 187 188 <span class="sd">It prepares the settings for retrieving the data from ECMWF servers and</span> 189 <span class="sd">process the resulting files to prepare them for the use with FLEXPART or</span> 190 <span class="sd">FLEXTRA.</span> 191 192 <span class="sd">If it is supposed to work locally then it works through the necessary</span> 193 <span class="sd">functions get_mars_data and prepare_flexpart. Otherwise it prepares</span> 194 <span class="sd">a job script (korn shell) which will do the necessary work on the</span> 195 <span class="sd">ECMWF server. This script will de submitted via the ecaccess command</span> 196 <span class="sd">ecaccess-job-submit.</span> 197 198 <span class="sd">This file can also be imported as a module which then contains the following</span> 199 <span class="sd">functions:</span> 200 201 <span class="sd"> * main - the main function of the script</span> 202 <span class="sd"> * submit - calls mk_jobscript depending on operation mode and submits its</span> 203 <span class="sd"> * mk_jobscript - creates the job script from a template</span> 204 205 <span class="sd">Type: submit.py --help</span> 206 <span class="sd">to get information about command line parameters.</span> 207 <span class="sd">Read the documentation for usage instructions.</span> 208 <span class="sd">'''</span> 194 209 195 210 <span class="c1"># ------------------------------------------------------------------------------</span> … … 201 216 <span class="kn">import</span> <span class="nn">inspect</span> 202 217 <span class="kn">import</span> <span class="nn">collections</span> 218 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span> 203 219 204 220 <span class="c1"># software specific classes and modules from flex_extract</span> 205 221 <span class="kn">import</span> <span class="nn">_config</span> 206 <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_arg uments</span><span class="p">,</span>222 <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span> 207 223 <span class="n">submit_job_to_ecserver</span><span class="p">,</span> <span class="n">read_ecenv</span><span class="p">)</span> 208 224 <span class="kn">from</span> <span class="nn">mods.get_mars_data</span> <span class="k">import</span> <span class="n">get_mars_data</span> … … 211 227 212 228 <span class="c1"># ------------------------------------------------------------------------------</span> 213 <span class="c1"># FUNCTIONS</span>229 <span class="c1"># METHODS</span> 214 230 <span class="c1"># ------------------------------------------------------------------------------</span> 215 231 … … 228 244 <span class="sd"> '''</span> 229 245 230 <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_arg uments</span><span class="p">()</span>246 <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_args</span><span class="p">()</span> 231 247 <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> 232 248 … … 247 263 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> 248 264 <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> 249 <span class="n"> normal_exit</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'FLEX_EXTRACT IS DONE!'</span><span class="p">)</span>265 <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">'FLEX_EXTRACT IS DONE!'</span> 250 266 <span class="k">else</span><span class="p">:</span> 251 <span class="n"> normal_exit</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'PRINTING MARS_REQUESTS DONE!'</span><span class="p">)</span>252 <span class="c1"># send files to ECMWF server and install there</span>267 <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">'PRINTING MARS_REQUESTS DONE!'</span> 268 <span class="c1"># send files to ECMWF server</span> 253 269 <span class="k">else</span><span class="p">:</span> 254 270 <span class="n">submit</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">job_template</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> 271 <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">'FLEX_EXTRACT JOB SCRIPT IS SUBMITED!'</span> 272 273 <span class="n">normal_exit</span><span class="p">(</span><span class="n">exit_message</span><span class="p">)</span> 255 274 256 275 <span class="k">return</span></div> 257 276 258 277 <div class="viewcode-block" id="submit"><a class="viewcode-back" href="../api.html#submit.submit">[docs]</a><span class="k">def</span> <span class="nf">submit</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">queue</span><span class="p">):</span> 259 <span class="sd">'''Prepares the job script and submit it to the specified queue.</span>278 <span class="sd">'''Prepares the job script and submits it to the specified queue.</span> 260 279 261 280 <span class="sd"> Parameters</span> 262 281 <span class="sd"> ----------</span> 263 <span class="sd"> jtemplate : :obj:`string`</span>282 <span class="sd"> jtemplate : str</span> 264 283 <span class="sd"> Job template file from sub-directory "_templates" for</span> 265 284 <span class="sd"> submission to ECMWF. It contains all necessary</span> … … 268 287 <span class="sd"> Default is "job.temp".</span> 269 288 270 <span class="sd"> c : :obj:`ControlFile`</span>289 <span class="sd"> c : ControlFile</span> 271 290 <span class="sd"> Contains all the parameters of CONTROL file and</span> 272 291 <span class="sd"> command line.</span> 273 292 274 <span class="sd"> queue : :obj:`string`</span>293 <span class="sd"> queue : str</span> 275 294 <span class="sd"> Name of queue for submission to ECMWF (e.g. ecgate or cca )</span> 276 295 … … 280 299 <span class="sd"> '''</span> 281 300 282 <span class="c1"># read template file and get index for CONTROL input</span>283 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">jtemplate</span><span class="p">))</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>284 <span class="n">lftext</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>285 <span class="n">insert_point</span> <span class="o">=</span> <span class="n">lftext</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">'EOF'</span><span class="p">)</span>286 287 301 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> 288 302 <span class="c1"># --------- create on demand job script ------------------------------------</span> 289 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n"> maxstep</span> <span class="o">></span> <span class="mi">24</span><span class="p">:</span>303 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span> 290 304 <span class="nb">print</span><span class="p">(</span><span class="s1">'---- Pure forecast mode! ----'</span><span class="p">)</span> 291 305 <span class="k">else</span><span class="p">:</span> 292 306 <span class="nb">print</span><span class="p">(</span><span class="s1">'---- On-demand mode! ----'</span><span class="p">)</span> 307 293 308 <span class="n">job_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_JOBSCRIPTS</span><span class="p">,</span> 294 <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'ksh'</span><span class="p">)</span> 295 <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> 296 297 <span class="n">lftextondemand</span> <span class="o">=</span> <span class="n">lftext</span><span class="p">[:</span><span class="n">insert_point</span><span class="p">]</span> <span class="o">+</span> <span class="n">clist</span> <span class="o">+</span> <span class="n">lftext</span><span class="p">[</span><span class="n">insert_point</span><span class="p">:]</span> 298 299 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">job_file</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> 300 <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lftextondemand</span><span class="p">))</span> 301 302 <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span> 309 <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">5</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'.ksh'</span><span class="p">)</span> 310 311 <span class="c1"># divide time periode into specified number of job chunks</span> 312 <span class="c1"># to have multiple job scripts</span> 313 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">job_chunk</span><span class="p">:</span> 314 <span class="n">start</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> 315 <span class="n">end</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">,</span> <span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> 316 <span class="n">chunk</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">job_chunk</span><span class="p">)</span> 317 318 <span class="k">while</span> <span class="n">start</span> <span class="o"><=</span> <span class="n">end</span><span class="p">:</span> 319 <span class="k">if</span> <span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span><span class="p">)</span> <span class="o"><=</span> <span class="n">end</span><span class="p">:</span> 320 <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> 321 <span class="k">else</span><span class="p">:</span> 322 <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">end</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> 323 324 <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> 325 326 <span class="n">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">)</span> 327 328 <span class="n">job_id</span> <span class="o">=</span> <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span> 329 <span class="nb">print</span><span class="p">(</span><span class="s1">'The job id is: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">job_id</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span> 330 331 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span> 332 <span class="n">c</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y%m</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> 333 <span class="c1"># submit a single job script</span> 334 <span class="k">else</span><span class="p">:</span> 335 <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> 336 337 <span class="n">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">)</span> 338 339 <span class="n">job_id</span> <span class="o">=</span> <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span> 340 <span class="nb">print</span><span class="p">(</span><span class="s1">'The job id is: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">job_id</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span> 303 341 304 342 <span class="k">else</span><span class="p">:</span> 305 343 <span class="c1"># --------- create operational job script ----------------------------------</span> 306 344 <span class="nb">print</span><span class="p">(</span><span class="s1">'---- Operational mode! ----'</span><span class="p">)</span> 345 307 346 <span class="n">job_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_JOBSCRIPTS</span><span class="p">,</span> 308 347 <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">5</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'oper.ksh'</span><span class="p">)</span> 309 310 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span>311 <span class="n">mt</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span>312 <span class="k">else</span><span class="p">:</span>313 <span class="n">mt</span> <span class="o">=</span> <span class="mi">0</span>314 348 315 349 <span class="n">c</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">'</span> 316 350 <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">'</span> 317 351 <span class="n">c</span><span class="o">.</span><span class="n">base_time</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_BASETIME}</span><span class="s1">'</span> 318 <span class="k">if</span> <span class="n"> mt</span> <span class="o">></span> <span class="mi">24</span><span class="p">:</span>352 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">></span> <span class="mi">24</span><span class="p">:</span> 319 353 <span class="n">c</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="s1">'$</span><span class="si">{MSJ_BASETIME}</span><span class="s1"> </span><span class="si">{MSJ_BASETIME}</span><span class="s1">'</span> 320 354 321 <span class="n">colist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> 322 323 <span class="n">lftextoper</span> <span class="o">=</span> <span class="n">lftext</span><span class="p">[:</span><span class="n">insert_point</span><span class="p">]</span> <span class="o">+</span> <span class="n">colist</span> <span class="o">+</span> <span class="n">lftext</span><span class="p">[</span><span class="n">insert_point</span> <span class="o">+</span> <span class="mi">2</span><span class="p">:]</span> 324 355 <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> 356 357 <span class="n">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">)</span> 358 359 <span class="n">job_id</span> <span class="o">=</span> <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span> 360 <span class="nb">print</span><span class="p">(</span><span class="s1">'The job id is: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">job_id</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span> 361 362 <span class="nb">print</span><span class="p">(</span><span class="s1">'You should get an email per job with subject flex.hostname.pid'</span><span class="p">)</span> 363 364 <span class="k">return</span></div> 365 366 <div class="viewcode-block" id="mk_jobscript"><a class="viewcode-back" href="../api.html#submit.mk_jobscript">[docs]</a><span class="k">def</span> <span class="nf">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">):</span> 367 <span class="sd">'''Creates the job script from template.</span> 368 369 <span class="sd"> Parameters</span> 370 <span class="sd"> ----------</span> 371 <span class="sd"> jtemplate : str</span> 372 <span class="sd"> Job template file from sub-directory "_templates" for</span> 373 <span class="sd"> submission to ECMWF. It contains all necessary</span> 374 <span class="sd"> module and variable settings for the ECMWF environment as well as</span> 375 <span class="sd"> the job call and mail report instructions.</span> 376 <span class="sd"> Default is "job.temp".</span> 377 378 <span class="sd"> job_file : str</span> 379 <span class="sd"> Path to the job script file.</span> 380 381 <span class="sd"> clist : list of str</span> 382 <span class="sd"> Contains all necessary parameters for ECMWF CONTROL file.</span> 383 384 <span class="sd"> Return</span> 385 <span class="sd"> ------</span> 386 387 <span class="sd"> '''</span> 388 <span class="kn">from</span> <span class="nn">genshi.template.text</span> <span class="k">import</span> <span class="n">NewTextTemplate</span> 389 <span class="kn">from</span> <span class="nn">genshi.template</span> <span class="k">import</span> <span class="n">TemplateLoader</span> 390 <span class="kn">from</span> <span class="nn">genshi.template.eval</span> <span class="k">import</span> <span class="n">UndefinedError</span> 391 392 <span class="c1"># load template and insert control content as list</span> 393 <span class="k">try</span><span class="p">:</span> 394 <span class="n">loader</span> <span class="o">=</span> <span class="n">TemplateLoader</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> 395 <span class="n">control_template</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> 396 <span class="bp">cls</span><span class="o">=</span><span class="n">NewTextTemplate</span><span class="p">)</span> 397 398 <span class="n">stream</span> <span class="o">=</span> <span class="n">control_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">control_content</span><span class="o">=</span><span class="n">clist</span><span class="p">)</span> 399 <span class="k">except</span> <span class="n">UndefinedError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 400 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span> 401 402 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">... error occured while trying to generate jobscript'</span><span class="p">)</span> 403 <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 404 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR CODE: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">errno</span><span class="p">))</span> 405 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR MESSAGE:</span><span class="se">\n</span><span class="s1"> </span><span class="se">\t</span><span class="s1"> '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">strerror</span><span class="p">))</span> 406 407 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">... error occured while trying to generate jobscript'</span><span class="p">)</span> 408 409 <span class="c1"># create jobscript file</span> 410 <span class="k">try</span><span class="p">:</span> 325 411 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">job_file</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> 326 <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class=" s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lftextoper</span><span class="p">))</span>327 328 <span class="n ">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span>329 330 <span class="c1"># --------------------------------------------------------------------------</span> 331 <span class="nb">print</span><span class="p">(</span><span class="s1">'You should get an email with subject flex.hostname.pid'</span><span class="p">)</span>412 <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">stream</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s1">'text'</span><span class="p">))</span> 413 <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> 414 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR CODE: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">errno</span><span class="p">))</span> 415 <span class="nb">print</span><span class="p">(</span><span class="s1">'... ERROR MESSAGE:</span><span class="se">\n</span><span class="s1"> </span><span class="se">\t</span><span class="s1"> '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">strerror</span><span class="p">))</span> 416 417 <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">... error occured while trying to write '</span> <span class="o">+</span> <span class="n">job_file</span><span class="p">)</span> 332 418 333 419 <span class="k">return</span></div> 420 334 421 335 422 <span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span> … … 347 434 <div role="contentinfo"> 348 435 <p> 349 © Copyright 2018, Anne Philipp and Leopold Haimberger .436 © Copyright 2018, Anne Philipp and Leopold Haimberger 350 437 351 438 </p> … … 366 453 367 454 368 <script type="text/javascript"> 369 var DOCUMENTATION_OPTIONS = { 370 URL_ROOT:'../', 371 VERSION:'7.1 alpha', 372 LANGUAGE:'None', 373 COLLAPSE_INDEX:false, 374 FILE_SUFFIX:'.html', 375 HAS_SOURCE: true, 376 SOURCELINK_SUFFIX: '.txt' 377 }; 378 </script> 379 <script type="text/javascript" src="../_static/jquery.js"></script> 380 <script type="text/javascript" src="../_static/underscore.js"></script> 381 <script type="text/javascript" src="../_static/doctools.js"></script> 382 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 455 456 457 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 458 <script type="text/javascript" src="../_static/jquery.js"></script> 459 <script type="text/javascript" src="../_static/underscore.js"></script> 460 <script type="text/javascript" src="../_static/doctools.js"></script> 461 383 462 384 463
Note: See TracChangeset
for help on using the changeset viewer.