Start tracking posting failure

This commit is contained in:
Thomas Sileo
2019-08-07 23:27:57 +02:00
parent 5bc655dfd3
commit 7f22622f9c
3 changed files with 47 additions and 5 deletions

View File

@@ -13,6 +13,7 @@ _Doc = Optional[Dict[str, Any]]
@unique
class CollectionName(Enum):
ACTIVITIES = "activities"
REMOTE = "remote"
def find_one_activity(q: _Q) -> _Doc:
@@ -25,3 +26,7 @@ def update_one_activity(q: _Q, update: _Q) -> None:
def update_many_activities(q: _Q, update: _Q) -> None:
DB[CollectionName.ACTIVITIES.value].update_many(q, update)
def update_one_remote(filter_: _Q, update: _Q, upsert: bool = False) -> None:
DB[CollectionName.REMOTE.value].update_one(filter_, update, upsert)

31
core/remote.py Normal file
View File

@@ -0,0 +1,31 @@
from urllib.parse import urlparse
from core.db import _Q
from core.db import update_one_remote
from utils import now
def server(url: str) -> str:
return urlparse(url).netloc
def _update(url: str, replace: _Q) -> None:
update_one_remote({"server": server(url)}, replace, upsert=True)
def track_successful_send(url: str) -> None:
now_ = now()
_update(
url,
{
"$inc": {"successful_send": 1},
"$set": {"last_successful_contact": now_, "last_contact": now_},
},
)
return None
def track_failed_send(url: str) -> None:
now_ = now()
_update(url, {"$inc": {"failed_send": 1}, "$set": {"last_contact": now_}})
return None