django 开启一个线程应写在哪个文件下

2020-12-08 11:47:20 +08:00
 IVeverKB

想在 django 运行的同时运行一个线程同步处理一些其他业务,那写在哪个文件比较合适?刚上手 django 不太了解程序的入口。

首先肯定不能写在 manage.py 下,我暂时考虑的是项目下的__init__.pywsgi.py 文件中不知是否合适,主要是想保证之后部署过程中这些文件在启动服务器之后只会被执行一次,且写在这里不会干涉 django 本身业务的运行。

之前有看到写在 urls.pyviews.py 中会因为部署在 uwsgi+nginx 而产生多进程执行多次,想规避一下类似的问题。

先提前感谢!!!

1653 次点击
所在节点    Python
7 条回复
ytymf
2020-12-08 13:18:06 +08:00
django 本身不含任何的入口,只有一个 wsgi 的接口,它的生命周期归上层的 uwsgi/iis 之类的管。这种需求用 celery 搞定就行了。
meiyoumingzi6
2020-12-08 13:40:48 +08:00
我理解你是想开一些定时任务或是异步任务这种?
新开一个进程好了, 楼上推荐的 celery 就不错啊
676529483
2020-12-08 16:53:21 +08:00
我一般写在 url/wsgi/apps 里面,但这些都不能避免 uwsgi 启动多进程,所以你还是单独启动一个进程吧
tabris17
2020-12-08 17:04:37 +08:00
现成的 django-celery 为什么不用?
https://github.com/celery/django-celery
nano91
2020-12-09 10:21:04 +08:00
随便新建个包就行了
julyclyde
2020-12-09 14:58:33 +08:00
@tabris17 django-celery 我记得已经淘汰了好多年了啊,咋突然诈尸了??
tabris17
2020-12-09 15:15:33 +08:00
@julyclyde 哎?最近一次用 django 还是 1.8 呢,时代变了啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/733250

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX