Apabila Nginx dan uWSGI belum dikonfigurasikan, gunakan apscheduler untuk menyediakan tugas berjadual dalam url.py sahaja dan gunakan pelayan run python manage.py, yang berjalan seperti biasa; uWSGI selesai, entri adalah daripada perubahan manage.py kepada uwsgi.py, yang memerlukan akses pengguna untuk memuatkan tugas berjadual apscheduler url.py, dan tugas berjadual yang sama dimulakan berulang kali dengan bilangan lawatan pengguna.
Kaedah 1: Pindahkan tugas berjadual apscheduler url.py ke uwgsi.py
Kaedah 2: Gunakan cron uWSGI
uWSGI's laman web rasmi: 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
Kaedah satu atau dua memerlukan tetapan pekerja=1 daripada uwsgi.ini
[uwsgi] # 进程个数 workers=1
Cron menggunakan uWSGI terhad kepada satu proses Jika berbilang proses akan menyebabkan pemasa dimulakan berulang kali, anda boleh menggunakan kunci socket.bind untuk mengubah tugasan yang dijadualkan.
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: //定时任务方法
Ada masalah mungkin untuk mendapatkan sock.bind(("127.0.0.1", 47200)) pada masa yang sama, yang boleh mengurangkan masalah penduaan tetapi tidak dapat diselesaikan sepenuhnya.
Langkah 1: Buat Pakej baharu dan tulis __init__.py
//如果是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
Langkah 2: Sediakan uwsgi.ini dan tambah mule = nama pakej/ init.py
[uwsgi] mule = package包名/__init__.py
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan tugas berjadual Django+Nginx+uWSGI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!