Skip to content

Commit c5c908c

Browse files
committed
⚡ Use thread
1 parent 41d2bfa commit c5c908c

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed

src/repl_python_wakatime/backends/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def get_project(
6060
def __or__(self, hook: Self) -> "Hook":
6161
return Hook(hooks=(self, hook))
6262

63-
async def __call__(self) -> None:
63+
def __call__(self) -> None:
6464
r"""Run hook"""
6565
for hook in self.hooks:
66-
await hook()
66+
hook()

src/repl_python_wakatime/backends/codestats.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
`_.
77
"""
88

9+
import asyncio
910
import json
1011
import logging
1112
from dataclasses import dataclass
1213
from datetime import datetime
1314
from socket import gethostname
15+
from threading import Thread
1416
from time import time
1517

1618
from aiohttp import ClientSession
@@ -58,10 +60,10 @@ def __post_init__(
5860
}
5961
self.datetime = datetime.now().astimezone()
6062
if self.timeout is None:
61-
self.timeout = ClientTimeout(1)
63+
self.timeout = ClientTimeout(10)
6264
self.session = None
6365

64-
async def __call__(self, xp: int = 1) -> None:
66+
def __call__(self, xp: int = 1) -> None:
6567
"""Add xp.
6668
6769
Sem sections are super small so this should be quick if it blocks.
@@ -71,20 +73,18 @@ async def __call__(self, xp: int = 1) -> None:
7173
:rtype: None
7274
"""
7375
self.data["xps"][0]["xp"] += xp
74-
if time() - self.datetime.timestamp() > self.interval:
75-
await self.send_xp()
76-
77-
async def __del__(self) -> None:
78-
await self.send_xp()
76+
if (
77+
time() - self.datetime.timestamp() > self.interval
78+
and self.data["xps"][0]["xp"] > 0
79+
):
80+
co = self.send_xp()
81+
Thread(target=asyncio.run, args=(co,)).run()
7982

8083
async def send_xp(self) -> str:
8184
"""Send xp.
8285
8386
:rtype: str
8487
"""
85-
if self.data["xps"][0]["xp"] == 0:
86-
return ""
87-
8888
self.datetime = datetime.now().astimezone()
8989
self.data["coded_at"] = self.datetime.isoformat()
9090
data = json.dumps(self.data).encode("utf-8")

src/repl_python_wakatime/backends/wakatime.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def get_wakatime_args(args: dict[str, str]) -> list[str]:
2929
f"--{k}={v}" for k, v in args.items()
3030
]
3131

32-
async def __call__(self) -> None:
32+
def __call__(self) -> None:
3333
"""Send wakatime heartbeat."""
3434
self.data["project"] = self.get_project(self.filenames)
3535
Popen(self.get_wakatime_args(self.data))

src/repl_python_wakatime/frontends/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
=============
33
"""
44

5-
import asyncio
65
from dataclasses import dataclass
76

87
from ..backends import Hook
@@ -16,4 +15,4 @@ def __post_init__(self) -> None:
1615
self.hook.frontend = self.__class__.__name__.lower()
1716

1817
def __call__(self):
19-
asyncio.run(self.hook())
18+
self.hook()

0 commit comments

Comments
 (0)