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 ...