nginx部署django,django部署在windows使用nginx
主要介绍Django Nginx uWSGI定时任务的实现方法,通过示例代码详细介绍,有一定的参考价值,感兴趣的朋友可以参考一下。
00-1010抽象cron使用uWSGI使用socket.bind锁和mule使用uWSGI。
目录
不配置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。
https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Cron.html uws gi : cron官方网站
end=1
而end:
尝试:
导入uwsgi
//设置一个job_id为0的定时器,每天在12:12启动fuc,-1代表*(全部)
uwsgi.register_signal(0,,fuc)
uwsgi.add_cron(0,12,12,-1,-1,-1)
end=0
例外:
及格
方法1或方法2需要设置uwsgi.ini的worker=1
[uwsgi]
#流程数量
工人=1
使用uWSGI的cron
使用uWSGI的Cron只能在单进程的情况下使用。如果多个进程会导致定时器重复启动,可以使用socket.bind lock修改定时任务。
尝试:
导入插座
sock=socket.socket(socket。AF_INET,socket。袜子_流)
sock.bind((127.0.0.1 ,47200))
除了socket.error:
Logger.info(禁止成功)
else:
//定时任务方法
有问题,同时获取sock.bind (("127.0.0.1 ",47200))可能会有问题,可以减缓重复问题,但不能完全解决。
使用socket.bind锁
第一步:创建一个新的包并编写__init__。巴拉圭
//如果是django项目,需要添加使用Django的模型
//导入django
//OS . environ . set default( django _ settings _ module , project name.settings )
//django.setup()
从apscheduler . schedulers . background导入背景计划程序
scheduler=BackgroundScheduler()
//scheduler.add_job未知,详见官网文档。
scheduler.add_job(.timezone=亚洲/上海)
scheduler.start()
尝试:
导入uwsgi
而True:
sig=uwsgi.signal_wait()
err:除外
及格
第二步:设置uwsgi.ini,添加mule=package name/init.py。
[uwsgi]
Mule=package包名/__init__。巴拉圭
关于Django Nginx uWSGI定时任务的实现方法这篇文章到此为止。有关Django Nginx uWSGI定时任务的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。