|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
-
- import celery.schedules
- from redbeat import RedBeatSchedulerEntry
- from datetime import timedelta
- from celery.schedules import crontab
-
- from celery_config import *
-
- from services.redis_service import RedisService
- from services.kafka_service import KafkaService
- from services.biz_service import BizService
-
-
- from urllib.parse import quote
- import asyncio,os,random,sys
-
- from common.log import logger
-
-
-
- scheduled_task_sync_wx_info_interval = 6000
- scheduled_task_add_contacts_from_chatrooms_interval=10
- environment = os.environ.get('environment', 'default')
-
-
-
-
-
-
-
- if environment == 'production':
- scheduled_task_sync_wx_info_interval = 60*11
- scheduled_task_add_contacts_from_chatrooms_interval = 60*11
- elif environment == 'test':
- scheduled_task_sync_wx_info_interval = 60*11
- scheduled_task_add_contacts_from_chatrooms_interval = 60*11
- else:
- scheduled_task_sync_wx_info_interval = 6000
- scheduled_task_add_contacts_from_chatrooms_interval=10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- random_minute = random.randint(0, 59)
- random_hour = random.randint(0, 23)
-
-
-
- tasks_schedule = [
-
- ("redbeat:scheduled_task_sync_wx_info", "tasks.scheduled_task_sync_wx_info",
- celery.schedules.schedule(timedelta(seconds=scheduled_task_sync_wx_info_interval)),
- [redis_config, kafka_config, gewe_config]),
-
-
-
-
-
-
- ("redbeat:scheduled_task_add_contacts_from_chatrooms", "tasks.scheduled_task_add_contacts_from_chatrooms",
- celery.schedules.schedule(timedelta(seconds=scheduled_task_add_contacts_from_chatrooms_interval)),
- [redis_config, kafka_config, gewe_config]),
- ]
-
-
- for task_id, task_name, schedule_obj, task_args in tasks_schedule:
- redbeat_entry = RedBeatSchedulerEntry(
- name=task_id,
- task=task_name,
- schedule=schedule_obj,
- args=task_args,
- app=celery_app
- )
- redbeat_entry.save()
-
- if task_name == "tasks.add_friends_task":
- if isinstance(schedule_obj, crontab):
- print(f"已注册 `{task_name}` 任务,将在每小时的第 {random_minute} 分钟执行")
- logger.info(f"已注册 `{task_name}` 任务,将在每小时的第 {random_minute} 分钟执行")
- else:
- print('scheduled_task_sync_wx_info 定时任务执行成功!')
- logger.info(f"scheduled_task_sync_wx_info 定时任务执行成功!")
-
- def setup_schedule():
-
- initial_run_in = 5
- entry = RedBeatSchedulerEntry(
- name='random-task',
- task='tasks.random_scheduled_task',
- schedule=timedelta(seconds=initial_run_in),
- app=celery_app
- )
- entry.save()
- print(f"Initial task scheduled in {initial_run_in} seconds")
-
- setup_schedule()
|