首页
学习
活动
专区
圈层
工具
发布

使用Django和FastCGI管理长时间运行的过程

问题背景:有一个Django+FastCGI的应用程序,需要修改以执行长时间的计算(可能长达半小时或更久)。需要在后台运行计算,并返回“您的作业已启动”类型的响应。...在进程运行期间,进一步访问该URL应返回“您的作业仍在运行”,直到作业完成,此时应返回作业结果。以后任何对该URL的访问都应返回缓存的结果。...对Django不太熟悉,不知道是否有内置的方法来实现想要的功能。尝试通过subprocess.Popen()启动进程,但除了在进程表中留下一个失效的条目之外,它工作正常。...解决方案:可以使用两种可能的解决方案:调度长时任务到长时任务管理程序(可能是上面提到的Django-Queue-Service)。将结果永久保存,无论是文件还是数据库。...jobfile']=outname outfile=fdopen(outfd,'a+') proc=Popen("python myjob.py",shell=True,stdout

46110

初次运行Git时的配置

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。...如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。 ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。...当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。...(也就是git config命令不带任何选项) 一般来说,我们在配置的时候都是针对当前用户来进行的,即使用选项--global,因为我们大多数时候都是开发公司内部的项目,代码是上传到公司的gitlab...除非是你们公司或者是团体作为某一开源项目的参与者,所有人使用一台服务器来进行开发,开发完以后的提交的时候可能是你们公司或者团体的公共名称以及邮箱。

1.2K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django 使用 django-redis 作为缓存的正确用法,别忽略缓存的使用原则

    Django 自身也有一套相对完善的缓存系统,这篇文章来介绍一下使用 redis 作为 Django 缓存的使用方法,并且说一下我在使用缓存的过程中遇到的问题。...django-redis 是一个可以让 django 使用 redis 作为缓存存储的第三方库,该库的地址可以查看 https://github.com/niwinz/django-redis 安装...django-redis 在项目使用的虚拟环境中使用 pip 安装即可: pip install django-redis 不过需要提醒的是,因为 django-redis 是支持 django 1.11...配置 django-redis 作为缓存 在你的 settings 文件中加入下面的配置代码即可: CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache...ID 和文章更新的日期作为缓存的 key,这样可以保证当文章更改的时候能够丢弃旧的缓存进而使用新的缓存,而当文章没有更新的时候,缓存可以一直被调用,知道缓存按照设置的过期时间过期。

    5.9K10

    区分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGI

    如下图所示: CGI程序通过标准输入(STDIN)和标准输出(STDOUT)来进行输入输出。...CONTENT_LENGTH 如果服务器与CGI程序信息的传递方式是POST,这个环境变量即使从标准输入STDIN中可以读到的有效数据的字节数。这个环境变量在读取所输入的数据时必须使用。...PATH_INFO 这个环境变量的值表示紧接在CGI程序名之后的其他路径信息。它常常作为CGI程序的参数出现。...当前运行在WSGI协议之上的Web框架有Bottle,Flask,Django 实现了python web程序与服务器之间交互的通用性。...如果是Nginx+uWSGI+App,那uWSGI就是一个中间件 如果是uWSGI+App,那它就是服务器 Nginx+uWGSI 假设我们使用 python 的 Django 框架写了一个网站,现在要将它挂在网上运行

    1.7K31

    LVS中Windows作为真实主机(RealServer)时的设置方法

    而上面大大规划了要用 LVS 负载均衡集群,在这个技术陈旧的企业,LVS 项目还是去年才真正推行。由于最开始是由我测试的,所以这次的部署又落到了我头上了。...一、在 Win 主机上新增环回虚拟网卡(Microsoft Loopback Adapter) 以管理员身份运行 cmd 后,在 cmd 命令窗口中执行:hdwwiz,弹出如下界面: ?...,网卡的 stronghost 处于启用状态,这个设置可以防止跨接口转发数据包,这就表明:来自一个网络适配器的请求不会被环回适配器处理,因为这个请求来自于不同的网络适配器。...为了将环回适配器从 stronghost 切换为 weakhost,需要运行以上四条命令,要不然 TCP 的状态会一直处于 SYN_RECV 状态。...关于 LVS+keepalived 的其他问题可以参考张戈博客的老文章:LVS+Keepalived 负载均衡主备&双主架构全攻略,有任何其他问题也可以给我留言。

    2.8K50

    C语言定义数组时使用枚举作为数组的下标

    所以这里通常都使用枚举变量作为下标来访问数组。...language_type_data[] = { "Chinese", "German", "American" }; 这里定义了一个字符指针型数组,用来保存语言类型,如下顶一个了一个枚举类型,用来作为访问数组的脚标...看似可读性高的代码其实也是硬编码作为脚标,如果在输入数据时候数组和枚举的顺序有一些变化,就会出现bug,且这个bug很难被发现。...且这个枚举是作为SDK提供给上层,且你的代码不公开,这样会出现很大问题。...为了避免这种隐患可以在定义数组时候使用枚举作为数组的下标,这样即使数据输入混乱,但是只要数组定义时候枚举下标定义和数组成员可以对应正确就可以避免这种错误。

    4.4K30

    django开发时遇到的跨域请求问题

    使用django进行web开发的时候会遇到一个问题,后端一切正常,但前端访问后端的时候会报错,错误如下: ? 遇到这种情况就是django的跨域问题。...,然后他在pip里对上述模块进行了安装,并且安装成功了,但他进入到pycharm继续开发的时候依然会报错,因为pip在不使用虚拟环境的时候,默认安装在python的安装路径下。...1)切换项目编译器到python默认安装路径(我的是在c盘安装路径下:) ?   ...2)在虚拟环境下安装django-cors-middleware(使用pycham为例:)     此界面没有django-cors-middleware模块时使用右边的加号对其进行安装即可(相信大家都会这个...', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles

    1.1K10

    调试PyPy运行Django出现的错误:Segmentation fault

    前两天在家研究了下pypy,顺便也搭建了一个基于pypy的virtualenv环境: 创建基于pypy的virtualenv虚拟环境 ,在上篇文章最后说到在用django处理mysql数据库的时候会出现这个错误...从一个 python manage.py sql blog 开始,阅读了大部分的 django.db.backends.mysql 的代码,稍带着也看了MySQLdb库的一些代码,终于最后找到了问题所在...在这个过程中,不断的对比Django中的cursor和正常情况下直接用MySQL代码创建的cursor,发现没有太多的区别,Django中的cursor其实是对MySQLdb创建出来的cursor的包装...而其他的cursor的操作没有什么特别的地方。 有逻辑的推敲代码还是很重要的,通过短路法不断的尝试,最后终于定位到了是Django在创建一个connection时发生的错误。...省略代码 尝试后发现去掉创建链接时 charset和use_unicode的参数创建就能成功。 到此为止问题已经找出来了。至于这俩参数的具体用处,下回再说。

    2.9K20

    Django使用(宝塔面板)uwsgi部署时的配置以及django日志文件的处理方法

    首先保证你有一个可运行的django工程 然后在虚拟环境里面安装好uwsgi 1 pip install uwsgi 配置nginx的服务如下 1 2 3 4 5 6 7 8 9 10 11 12 13...uwsgi里的一致  } } 这里需要注意的是,nginx中的 location /account 要和你在django中的地址一致,即django 和nginx是可以找到的路由 先在脚本中测试使用简单命令启动服务...,可以正常运行,那么就是成功的,否则自己查看控制台中输出的错误信息,然后对应的去修改。...最后是写入到配置文件的运行方式,新建一个test.ini 文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [uwsgi] #监听的地址...部署时的配置以及django日志文件的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    2.5K20

    django开发时遇到问题的正确求助姿势

    为此,我想向大家介绍一些当初我学习 django 时遇到问题如何有效求助的一些经验,一些更容易得到解决方案的求助渠道,以及一些可供查阅的 django 资料等。...也许你害怕内容太多,但我们要做的是通读文档,知道文档的哪一部分讲了一个什么问题,对 django 相关组件的文档说明有一个鸟瞰式的掌握,这样当遇到某个问题时你就能想起这个问题曾在文档的某个部分有过讨论,...当然如何区分一个问题是否是好问题难以找到一个合适的标准,我们不妨从反面来定义这个问题,以下一些问题我相信你一看就知道是有问题的,但我任然经常收到此类让我不知所措的问题: 我运行开发服务器,但总是报错...,运行不起来,我该怎么办?...我在运行程序后提示 XX 异常,这是怎么回事呀? 我写好了代码,但是看不到你所说的效果是怎么回事? 我该怎么在服务器上创建一个文件并写入内容?

    1.3K80

    Python Web开发中的WSGI协议

    在Python Web开发中,我们一般使用Flask、Django等web框架来开发应用程序,生产环境中将应用部署到Apache、Nginx等web服务器时,还需要uWSGI或者Gunicorn。...Java有专用的Servlet规范,实现了Servlet API的Java web框架开发的应用可以在任何实现了Servlet API的web服务器上运行。...uWSGI、uwsgi与WSGI的区别   - uwsgi:与WSGI一样是一种通信协议,是uWSGI服务器的独占协议,据说该协议是fastcgi协议的10倍快。  ...Django中WSGI的实现 每个Django项目中都有个wsgi.py文件,作为application是这样实现的: from django.core.wsgi import get_wsgi_application...Django也自带了WSGI server,当然性能不够好,一般用于测试用途,运行runserver命令时,Django可以起一个本地WSGI server,django/core/servers/basehttp.py

    1.2K10

    Python Web 部署方式大全

    FastCGI的工作流程: Web Server启动时载入FastCGI进程管理器(PHP-CGI或者PHP-FPM或者spawn-cgi) FastCGI进程管理器自身初始化,启动多个CGI解释器进程...FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出。...只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然。WSGI就是Python的CGI包装,相对于Fastcgi是PHP的CGI包装。...uWSGI和Gunicorn: Django项目用Nginx+uWSGI方式部署,Tornado项目用Nginx+Gunicorn方式部署: Nginx都作为负载均衡以及静态内容转发。

    2K40

    Android使用SurfaceView作为相机预览识图时,视图被拉伸的问题

    网上已经有很多人提到过,导致这种现象的原因是,传入的相机预览图像长宽比例,与SurfaceView本身大小长宽比例不一致。...那么解决方法也非常简单,只要获取一下设备本身支持的相机比例,然后选择其中一个与SurfaceView实际比例(经常就是设备的长宽)最相近的即可。...} } @Override public void surfaceDestroyed(SurfaceHolder holder) { //摧毁时释放相机的资源...Camera.Size result = null; final Camera.Parameters p = mCamera.getParameters(); //特别注意此处需要规定rate的比是大的比小的...,不然有可能出现rate = height/width,但是后面遍历的时候,current_rate = width/height,所以我们限定都为大的比小的。

    4.6K80
    领券