python - 如何用户计划库每分钟运行一次功能
问题描述
当我使用计划库(库链接)每 1 分钟运行一次函数时。它工作正常,但我的其他 URL 不起作用。只有预定的功能工作。
#import scheduler library
import schedule
import time
#update every hour global table no of players and totol payouts
def updateTotalPayoutsAndTotalPlayers():
try:
querysetGlobal = Global.objects.filter().first()
querysetUser = Players.objects.filter(is_active=1).count()
querysetTotalPayouts = Game.objects.filter(gameStatusId=3).aggregate(Sum('pot'))
totalPayouts = querysetTotalPayouts['pot__sum']
# print("total payouts : ",totalPayouts)
querysetGlobal.totalPlayers = querysetUser
querysetGlobal.totalPayouts = 0 if totalPayouts==None else totalPayouts
querysetGlobal.save()
# print("completed task......")
except Exception as e:
print("error updating payouts and no of players : ", e)
#update globals table called ever one minute
schedule.every(1).minutes.do(updateTotalPayoutsAndTotalPlayers)
while True:
schedule.run_pending()
time.sleep(1)
当我在其他 API 工作时删除。但我的日程安排不会运行。
运行服务器我使用了命令:python manage.py runserver
解决方案
from celery import shared_task
@shared_task(bind=True, default_retry_delay=10, max_retries=5)
def my_func(self):
***some code***
或者尝试这样的事情:
@periodic_task(run_every=timedelta(seconds=60))
def my_func():
***some code***
在此之前在 Linux/Windows/Mac 上安装 redis 服务器并使pip install redis。
在您的设置中:
# Redis/Celery application definition
REDIS_HOST = '127.0.0.1'
REDIS_PORT = '6379'
BROKER_URL = 'redis://' + REDIS_HOST + ':' + REDIS_PORT + '/0'
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 3600}
CELERY_RESULT_BACKEND = 'redis://' + REDIS_HOST + ':' + REDIS_PORT + '/0'
推荐阅读
- php - 使用 MySQL 通过 WP PHP 模板生成内容 - 连接,找不到数据库
- terraform - 获取 aws_instance 创建的 key_pair 名称
- python - 根据脚本刚刚访问的数据在特定时间启动脚本
- speech-recognition - 如何使用隐马尔可夫模型进行孤立词识别
- facebook-graph-api - Facebook graph api - 在开发模式下获取页面公共内容访问
- python - 如何在 Pandas 中获得标准化的时间表示?
- r - 如何在数据表中提取节点名称及其特征向量中心性
- angular - Why error occurs on input text html element?
- php - 将“foreach”循环转换为:“for、while 和 do while”?
- redux - 如何使用 react-test-renderer 测试 redux 连接的 HOC 组件的存储状态更改?