NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

__init__.py (1000B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\uthread2\delayedcalls\__init__.py
      2 from .. import start_tasklet, sleep_sim, sleep
      3 MAX_SINGLE_SLEEP = 86400
      4 MAX_TOTAL_DELAY = 1209600
      5 
      6 def call_after_simtime_delay(tasklet_func, delay, *args, **kwargs):
      7     return _call_after_delay(delay, sleep_sim, tasklet_func, *args, **kwargs)
      8 
      9 
     10 def call_after_wallclocktime_delay(tasklet_func, delay, *args, **kwargs):
     11     return _call_after_delay(delay, sleep, tasklet_func, *args, **kwargs)
     12 
     13 
     14 def _call_after_delay(delay, sleep_func, tasklet_func, *args, **kwargs):
     15     if delay > MAX_TOTAL_DELAY:
     16         raise RuntimeError('Cannot delay a tasklet for more than MAX_TOTAL_DELAY seconds')
     17 
     18     def _worker(_delay):
     19         while _delay > MAX_SINGLE_SLEEP:
     20             sleep_func(MAX_SINGLE_SLEEP)
     21             _delay -= MAX_SINGLE_SLEEP
     22 
     23         sleep_func(_delay)
     24         tasklet_func(*args, **kwargs)
     25 
     26     return start_tasklet(_worker, delay, stackless_tracing_enabled=False)