Beispiel #1
0
def counter(ref):
    
    cached_result = soft_cache.try_get_cache([ref], "wc")
    if cached_result is not None:
        print "Counter: got cached result! It was", cached_result
    else:
        with skypy.deref_as_raw_file(ref, make_sweetheart=True) as in_fp:
            cached_result = len(in_fp.read())
        print "Counter: calculated result anew. It was", cached_result
        soft_cache.put_cache([ref], "wc", cached_result)
    return cached_result            
Beispiel #2
0
         skypy.current_task.main_coro_callback = None
     else:
         break
 # We're back -- either the user script is done, or else it's stuck waiting on a reference.
 if skypy.current_task.halt_reason == skypy.HALT_RUNTIME_EXCEPTION:
     report = "User script exception %s\n%s" % (str(skypy.current_task.script_return_val), skypy.current_task.script_backtrace)
     out_message = ("error", {"report": report})
 else:
     if skypy.current_task.halt_reason == skypy.HALT_REFERENCE_UNAVAILABLE:
         out_dict = {"executor_name": "skypy",
                     "extra_dependencies": [SW2_FutureReference(x) for x in skypy.current_task.persistent_state.ref_dependencies.keys()],
                     "is_fixed": skypy.current_task.persistent_state.is_fixed
                    }
         if not skypy.current_task.persistent_state.is_fixed:
             coro_ref = skypy.save_state(resume_state, make_local_sweetheart=True)
             soft_cache.put_cache([coro_ref], "coro", resume_state)
             out_dict.update({"pyfile_ref": skypy.current_task.persistent_state.py_ref,
                              "coro_ref": coro_ref})
         write_framed_json(("tail_spawn", out_dict), write_fp)
     elif skypy.current_task.halt_reason == skypy.HALT_DONE:
         out_fp = MaybeFile(open_callback=lambda: skypy.open_output(0))
         with out_fp:
             if skypy.current_task.persistent_state.export_json:
                 simplejson.dump(skypy.current_task.script_return_val, out_fp)
             else:
                 pickle.dump(skypy.current_task.script_return_val, out_fp)
         skypy.ref_from_maybe_file(out_fp, 0)
     if skypy.current_task.persistent_state.is_fixed:
         out_message = ("exit", {"keep_process": "must_keep"})
     else:
         out_message = ("exit", {"keep_process": "may_keep", "soft_cache_keys": soft_cache.get_cache_keys()})