Tib*_*ibs 5 python django gunicorn python-multiprocessing
我正在通过 Gunicorn 运行 Django 实例。
在这个 Django 项目中,我有一个视图,它在后台启动一个多处理任务,每 x 毫秒获取一些数据,如果没有收到新请求,则在 x 秒后停止。
使用 runserver,我没有任何问题,我的多重处理继续按预期工作,并且我的视图从该多重处理中获取数据没有任何问题。
但是当我切换到 Gunicorn 时,似乎当我请求视图时,它没有检测到该进程已经在运行,并尝试并行启动一个新进程,返回错误的值。
这是代码。我的视图正在调用 NewReq 函数
import multiprocessing
manager=multiprocessing.Manager()
StateU3 = multiprocessing.Value('i', 0)
def NewReq(ID):
if StateU3.value==0:
p=multiprocessing.Process(target=BackgroundProcess)
p.start()
...
return (Values)
Run Code Online (Sandbox Code Playgroud)
当 Gunicorn 调用该视图时,似乎 StateU3 值不在不同请求之间共享,就像 runserver 那样。
这是我的gunicorn.service 文件
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/home/project
ExecStart=/usr/local/bin/gunicorn --access-logfile - --workers 5 --bind unix:/home/project/project.sock project.wsgi:application
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
您有任何线索吗?问题可能出在哪里?工人数量?线程数?
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |