129 定時修正統計資料的實現

2021-09-24 21:43:31 字數 2042 閱讀 7952

from apscheduler.schedulers.background import backgroundscheduler

from apscheduler.executors.pool import threadpoolexecutor

...# 新增定時任務apscheduler

executors =

from .schedule.statistic import fix_statistics

# 每天3點執行

# 立即執行,用於測試

...

toutiao-backend/toutiao/schedule/statistics.py

from cache import statistic as cache_statistic

def fix_process(count_storage_cls):

"""修復處理方法

"""# 進行資料庫查詢

ret = count_storage_cls.db_query()

# 設定redis資料

count_storage_cls.reset(ret)

"""修正統計資料

"""fix_process(cache_statistic.userarticlescountstorage)

fix_process(cache_statistic.userfollowingscountstorage)

common/cache/statistic.py

class countstoragebase(object):

"""統計數量儲存的父類

"""...

@classmethod

def reset(cls, db_query_ret):

"""由定時任務呼叫的重置資料方法

"""# 設定redis的儲存記錄

pl.delete(cls.key)

# zadd(key, score1, val1, score2, val2, ...)

# 方式一

# for data_id, count in db_query_ret:

# pl.zadd(cls.key, count, data_id)

# 方式二

redis_data =

for data_id, count in db_query_ret:

# redis_data = [count1, data_id1, count2, data_id2, ..]

pl.zadd(cls.key, *redis_data)

# pl.zadd(cls.key, count1, data_id1, count2, data_id2, ..]

pl.execute()

class userarticlescountstorage(countstoragebase):

"""使用者文章數量

"""key = 'count:user:arts'

@staticmethod

def db_query():

ret = db.session.query(article.user_id, func.count(article.id)) \

return ret

class userfollowingscountstorage(countstoragebase):

"""使用者關注數量

"""key = 'count:user:followings'

@staticmethod

def db_query():

ret = db.session.query(relation.user_id, func.count(relation.target_user_id)) \

.filter(relation.relation == relation.relation.follow)\

.group_by(relation.user_id).all()

return ret

SQL 按照季度,固定時間段,分組統計資料

最近在工作中接到了乙個需求,要求統計當月以10天為乙個週期,每個週期的資料彙總資訊。假設有一張表如下 表table test中 id amount create date 1 50 2017 01 01 2 50 2017 01 09 3 50 2017 01 11 4 50 2017 01 19 ...

MATLAB新的統計資料型別Table

matlab 2013引入了新的統計資料型別table,主要功能是模仿r或s語言的.我一直被r語言中的資料型別dataframe所震撼,屢屢嘆息大名鼎鼎的matlab居然沒有.現在好了,有了table型別,一切迎刃而解.看來r作為統計語言霸主的地位似乎也可以動動了.下面的示例是我布置給學生的作業,主...

MySQL按時間統計資料的方法總結

在做資料庫的統計時,經常會需要根據年 月 日來統計資料,然後配合echarts來製作視覺化效果。資料庫 mysql 思路按照時間維度進行統計的前提是需要資料庫中有保留時間資訊,建議是使用mysql自帶的datetime型別來記錄時間。timestamp程式設計客棧 datetime default ...