Heim >Betrieb und Instandhaltung >Nginx >So implementieren Sie geplante Django+Nginx+uWSGI-Aufgaben
Wenn Nginx und uWSGI nicht konfiguriert wurden, verwenden Sie apscheduler, um geplante Aufgaben nur in url.py einzurichten, und verwenden Sie den Python-Run-Server manage.py, der normal, aber danach ausgeführt wird Die Konfiguration von uWSGI ist abgeschlossen, der Einstiegspunkt ändert sich von manage.py zu uwsgi.py, was Benutzerzugriff erfordert, um die geplante Apscheduler-Aufgabe von url.py zu laden, und dieselbe geplante Aufgabe wird wiederholt mit der Anzahl der Benutzerbesuche gestartet.
Methode 1: Migrieren Sie die geplante Apscheduler-Aufgabe von url.py nach uwgsi.py
Methode 2: Verwenden Sie uWSGI-Cron# 🎜🎜#
Offizielle Cron-Website von uWSGI: https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Cron.htmlend=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: passMethode eins oder Methode zwei sind beide Sie uwsgi.ini worker=1
[uwsgi] # 进程个数 workers=1Socket.bind lockDie Verwendung von uWSGI cron ist nur auf einen einzelnen Prozess beschränkt, was dazu führt Timer Bei wiederholten Startproblemen können Sie die Socket.bind-Sperre verwenden, um die geplante Aufgabe zu ändern.
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: //定时任务方法Es liegt ein Problem vor. Möglicherweise wird gleichzeitig sock.bind(("127.0.0.1", 47200)) abgerufen, was das Duplizierungsproblem lindern kann, aber nicht vollständig gelöst werden kann . UWSGI Mule verwendenDer erste Schritt: Erstellen Sie ein neues Paket und schreiben Sie __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: passDer zweite Schritt: Richten Sie uwsgi.ini ein , füge hinzu mule = package package name/init.py
[uwsgi] mule = package包名/__init__.py
Das obige ist der detaillierte Inhalt vonSo implementieren Sie geplante Django+Nginx+uWSGI-Aufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!