Nginx と uWSGI が設定されていない場合は、apscheduler を使用して url.py のみでスケジュールされたタスクを設定し、python manage.py 実行サーバーを使用します。これは通常どおり実行されますが、 uWSGI が完了すると、エントリは manage.py から uwsgi.py に変更されます。これには、url.py の apscheduler スケジュールされたタスクをロードするためにユーザー アクセスが必要で、同じスケジュールされたタスクがユーザーのアクセス数に応じて繰り返し開始されます。
方法 1: url.py の apscheduler スケジュールされたタスクを uwgsi.py に移行する
方法 2: uWSGI の cron を使用する
uWSGI のcron 公式 Web サイト: https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Cron.html
end=1 while end: try: import uwsgi //建立job_id为0,每天12:12启动fuc的定时器,-1代表*(全部) uwsgi.register_signal(0, "", fuc) uwsgi.add_cron(0, 12,12,-1,-1,-1) end=0 except: pass
方法 1 または 2 では、uwsgi.ini worker=1
[uwsgi] # 进程个数 workers=1
try: import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(("127.0.0.1", 47200)) except socket.error: logger.info('禁止成功') else: //定时任务方法
//如果是Django项目,需要加上才可以使用django的model //import django //os.environ.setdefault('DJANGO_SETTINGS_MODULE', '项目名.settings') //django.setup() from apscheduler.schedulers.background import BackgroundScheduler scheduler = BackgroundScheduler() //scheduler.add_job不详说,具体看官网文档 scheduler.add_job(...,timezone='Asia/Shanghai') scheduler.start() try: import uwsgi while True: sig = uwsgi.signal_wait() except Exception as err: pass
[uwsgi] mule = package包名/__init__.py
以上がDjango+Nginx+uWSGI スケジュールされたタスクを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。