Send buffered heartbeats to API every 30 seconds.
This commit is contained in:
parent
da01fa268b
commit
a37061924b
1 changed files with 13 additions and 4 deletions
17
WakaTime.py
17
WakaTime.py
|
@ -110,7 +110,6 @@ class Popen(subprocess.Popen):
|
||||||
|
|
||||||
|
|
||||||
# globals
|
# globals
|
||||||
HEARTBEAT_FREQUENCY = 2
|
|
||||||
ST_VERSION = int(sublime.version())
|
ST_VERSION = int(sublime.version())
|
||||||
PLUGIN_DIR = os.path.dirname(os.path.realpath(__file__))
|
PLUGIN_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||||
API_CLIENT = os.path.join(PLUGIN_DIR, 'packages', 'wakatime', 'cli.py')
|
API_CLIENT = os.path.join(PLUGIN_DIR, 'packages', 'wakatime', 'cli.py')
|
||||||
|
@ -121,8 +120,11 @@ LAST_HEARTBEAT = {
|
||||||
'file': None,
|
'file': None,
|
||||||
'is_write': False,
|
'is_write': False,
|
||||||
}
|
}
|
||||||
|
LAST_HEARTBEAT_SENT_AT = 0
|
||||||
PYTHON_LOCATION = None
|
PYTHON_LOCATION = None
|
||||||
HEARTBEATS = queue.Queue()
|
HEARTBEATS = queue.Queue()
|
||||||
|
HEARTBEAT_FREQUENCY = 2 # minutes between logging heartbeat when editing same file
|
||||||
|
SEND_BUFFER_SECONDS = 30 # seconds between sending buffered heartbeats to API
|
||||||
|
|
||||||
|
|
||||||
# Log Levels
|
# Log Levels
|
||||||
|
@ -451,11 +453,18 @@ def append_heartbeat(entity, timestamp, is_write, view, project, folders):
|
||||||
}
|
}
|
||||||
|
|
||||||
# process the queue of heartbeats in the future
|
# process the queue of heartbeats in the future
|
||||||
seconds = 4
|
set_timeout(lambda: process_queue(timestamp), SEND_BUFFER_SECONDS)
|
||||||
set_timeout(process_queue, seconds)
|
|
||||||
|
|
||||||
|
|
||||||
def process_queue():
|
def process_queue(timestamp):
|
||||||
|
global LAST_HEARTBEAT_SENT_AT
|
||||||
|
|
||||||
|
# Prevent sending heartbeats more often than SEND_BUFFER_SECONDS
|
||||||
|
now = int(time.time())
|
||||||
|
if timestamp != LAST_HEARTBEAT['time'] and LAST_HEARTBEAT_SENT_AT > now - SEND_BUFFER_SECONDS:
|
||||||
|
return
|
||||||
|
LAST_HEARTBEAT_SENT_AT = now
|
||||||
|
|
||||||
try:
|
try:
|
||||||
heartbeat = HEARTBEATS.get_nowait()
|
heartbeat = HEARTBEATS.get_nowait()
|
||||||
except queue.Empty:
|
except queue.Empty:
|
||||||
|
|
Loading…
Reference in a new issue