首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django2.2+Daphne+nginx+supervisor 生产环境部署

运行项目时,提示也和wsgi的不一样,如下图: ? 官方推荐的 asgi 服务器是 daphne 处理 websocket 请求,下面说下如何部署daphne和supervisor。...1.安装部署daphne 安装 django-channels 的时候 daphne 就已经连带一起安装了 在项目的根目录新建一个asgi.py文件,和 wsgi文件同级,内容如下: import os...配置是否正确: 输入如下命令,看 asgi 服务是否正常启动: daphne -b 0.0.0.0 -p 8008 项目名称.asgi:application 在websocket在线测试网站,测试websocket...3.配置supervisor 首先是在终端输入命令 pip install supervisor 安装 supervisor 执行 echo_supervisord_conf > /etc/supervisord.conf...生成supervisor的配置文件 编辑配置文件,输入如下内容: [program:supervisor项目名称] directory=/dqcy_message #项目目录 command=daphne

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

    解决在 Spring Boot 中运行 JUnit 测试遇到的 NoSuchMethodError 错误

    在本文章中,我们将会解决在 Spring Boot 运行测试的时候,得到 NoSuchMethodError 和 NoClassDefFoundError 的 JUnit 错误。...这个错误的原因,通常是因为我们的系统中有 2 个不同的 JUnit 版本,在运行的时候 JUnit 不知道使用哪个版本来运行。...上面的情况的结果就是 JUnit launcher 尝试用老版的 JUnit 版本中不存在的类来运行。 知道上面的原因后,我们下面来看看可以使用的一些修复方法。... NoSuchMethodError 和 NoClassDefFoundError 错误,这个错误在 Spring Boot 中属于比较常见的错误。...结论 在本文章中,我们对 Spring 常见的 NoSuchMethodError 和 NoClassDefFoundError JUnit 错误进行了一些阐述,并且针对这个问题提供了解决方案。

    2.8K20

    Django Channels websocket 搭建实践(实现长链接消息通知功能)

    任何具有组名称的人都可以按名称向组添加/删除频道,并向组中的所有频道发送消息。无法枚举特定组中的通道。 每个使用者实例都有一个自动生成的唯一通道名,因此可以通过通道层进行通信。...在我们的聊天应用程序中,我们希望同一个房间中的多个聊天消费者实例相互通信。为此,我们将让每个聊天消费者将其频道添加到一个组,该组的名称基于房间名称。...pip install daphne 启动 daphne 和 channels application daphne -b 0.0.0.0 -p 8001 joyoo.asgi:application...daphne 后台运行可以使用 systemd 或者  supervisor # supervisor config [program:daphne] directory=/root/yzq/djangos...autostart=true autorestart=true stdout_logfile=/root/yzq/logs/websocket.log redirect_stderr=true 配置 nginx 在原

    2.2K40

    【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task

    文章目录 一、打印 Android 中当前运行的 Activity 任务栈信息 二、Activity 任务栈信息分析 三、Activity 在相同 Stack 的不同 Task 情况 一、打印 Android...中当前运行的 Activity 任务栈信息 ---- 使用如下命令 , 打印 Android 手机中的 Activity 栈 : adb shell dumpsys activity activities...; 三、Activity 在相同 Stack 的不同 Task 情况 ---- 默认状态下 , 同一个应用启动的两个 Activity 都在相同 Stack 的相同 Task 中 , 但是如下情况会出现...Activity 在相同 Stack 的不同 Task 中 ; 参考 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )...; 注意 : 两个 Activity 虽然在不同的 Task 任务中 , 但还是在相同的 Stack 栈中 , 如 : Stack #365: type=standard mode=fullscreen

    5.9K10

    【错误记录】Kotlin 代码运行时报错 ( 在 init 初始化块中调用还未初始化的成员属性 )

    文章目录 一、报错信息 二、问题分析 三、解决方案 该问题的本质就是 , 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常...时会执行一系列的 初始化操作 , 这些操作按照如下顺序执行 : 主构造函数 中属性赋值 类中的属性赋值 init 初始化块 中的代码执行 次构造函数 中的代码执行 首先 , 上述代码中没有主构造 函数...函数 , 在该函数中调用了 fun nameFirstLetter() = name[0] 中的 name 属性 , 但是 name 属性还没有赋值 , 因此爆出了空指针异常 ; init {...println(nameFirstLetter()) name = "Tom" } 该问题的本质就是 , 成员属性 在 init 初始化代码块中进行初始化 ,...但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常 ; 三、解决方案 ---- 调换 初始化代码块 中的代码顺序 , 先给 name 成员赋值 , 然后再执行 调用 name

    1.7K10

    Python & Supervisor

    值得一说的是,到目前为止,supervisor还不支持在window上运行,只能在linux系统上运行。对于window的开发用户就显得有些苍白无力了。...false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。...默认是3 exitcodes 一个预期的退出返回码,默认是0,2。...user 如果supervisord以root运行,则会使用这个设置用户启动子程序 redirect_stderr 如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符...stdout_logfile 把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。

    62320

    Supervisor管理进程

    false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。...默认是3 exitcodes:一个预期的退出返回码,默认是0,2。...user:如果supervisord以root运行,则会使用这个设置用户启动子程序 redirect_stderr:如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符...stdout_logfile:把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。...:设置进程的umask serverurl:是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url 4.运行Supervisor 4.1 启动supervisord

    6.6K1901

    我的python学习--第十二天(二)

    在Python中,异常也是对象,可对它进行操作。...示例代码: try:     f = open(“file.txt”,”r”) except IOError, e:      # 捕获到的IOError错误的详细原因会被放置在对象e中,然后运行该异常的...三、手动触发异常   在Python中,除了程序自身错误引发的异常外,也可以根据自己需要手工引发异常,最简单的形式就是输入关键 字raise,后跟要引发的异常的名称。  ...只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是一一对应的。这意味着,无需把logger实例在各个模块中传递。...这也就出现了一个问题,同一条日志会重复输出 解决方案 1、每个logger实例都给一个独立的名字,输出之间互不影响, 2、logging.conf中定义不继承 nginx + gunicorn + supervisor

    72320

    【转】storm和zookeeper中的节点的关系

    3、路径a和b只有在提交新的Topology时才会创建,且b中的数据设置好以后就不会再变化;c在第一次为该Topology进行任务分配的时候会创建,若任务分配计划有变,Nimbus会更新它内容。...1、箭头3表示Supervisor在Zookeeper中创建的路径是/storm/supervisor/supervisor-id>。新节点加入时会在该路径下创建一个znode节点。...3、箭头9表示Supervisor会从LocalState中获取由它启动的所有Worker的心跳信息。...因为Worker与Supervisor属于不同的进程,因此Storm采用本地文件的方式来传递心跳。 四、Executor Executor只会利用Zookeeper来记录自己的运行错误信息。...箭头7表示Executor在Zookeeper中创建的路径,每个Executor会在运行过程中记录发生的错误。

    99820

    python执行系统命令的方法

    做为系统工程师来说,经常会用到python脚本去调用一下系统命令,现把经常使用的集中调用方法总结如下: 一,os.system(command) 在一个子shell中运行command命令,并返回...这个函数执行命令的结果无法保存,只能显示在标准输出。但是,命令执行是否成功的退出状态可以通过变量得到,非0即为不正常。...如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。...他可以与新建进程的输入/输出/错误管道联通,并可以获得新建进程执行的返回状态等。使用subprocess模块主要目的就是来替代之前的os,popen,commands等函数或模块。...第一种: getoutput(cmd) 在shell中执行cmd,返回包含命令标准输出和标准错误流的字符串。

    3.9K20

    Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(二)

    http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload 此时,可以在本机的浏览器中访问服务器的...,可以看到,访问的接口成功返回数据,证明Nginx已经完成对我们部署应用程序的转发。...4.2 配置Supervisor 运行supervisord服务的时候,需要指定Supervisor配置文件,如果没有显示指定,默认会从以下目录中加载: $CWD/supervisord.conf...这样,Supervisor会自动加载该目录下.conf后缀的文件作为共同服务配置。...服务,命令如下: supervisord -c /etc/supervisor/supervisord.conf 这时,在会发现我们部署的网站程序不在shell中通过dotnet xxx.dll启动,同样可以访问

    82020

    Jstorm2.1.1集群安装

    ,通常互联网的业务场景下strom会从kafka里面读取数据,然后计算完毕后,把计算结果写入redis,mysql或者hbase等一些存储或缓存系统中。...Strom原生是用Clojure开发的,阿里团队在使用过程中,发现了不少了问题,于是使用Java重写了整个storm,使其更稳定,更快,更强大,并兼容原来storm的接口,所以命名为Jstrom,在阿里文档中提到...,原storm写的jar,无须改动任何代码即可高效稳定的运行在jstrom的集群中, 如何安装Jstorm?...上,执行nohup jstorm nimbus &启动nimbus,查看$JSTORM_HOME/logs/nimbus.log,检查是否有错误 B:在supervisor节点上执行 “nohup jstorm...supervisor &”, 查看$JSTORM_HOME/logs/supervisor.log检查有无错误 (9)访问nimbus所在机的ip:8080,查看Jstorm的ui图:

    1.2K40

    通过Gunicorn、Supervisor和Nginx更好地运行Django

    通过runserver运行Django 相信用过Django做开发的人对于python manage.py runserver 这个命令一定不陌生,这个命令利用django自带的一个web服务器,可以帮助我们在本地很简单地就运行...在使用 Gunicorn 运行 Django 之前,你需要确保已经正确地安装了 Django 和 Gunicorn。...此外,如果后端应用挂掉或重启,在这段时间内 Nginx 仍然可以继续为用户提供服务(例如返回一个友好的错误页面)。...通过在 Nginx 中开启 HTTP/2,你的用户可以享受到更快的加载速度和更低的延迟。...通过Supervisor来托管gunicorn和nginx 我是在第二份工作中才接触到supervisor的,了解之后就非常喜欢这个工具,最大好处就是托管某一个进程,尤其是如果进程出现问题死掉了,supervisor

    12510

    ASGI Servers库详解

    homepage函数接收请求并返回一个JSON响应。现在,我们可以使用Uvicorn运行这个应用程序。...在命令行中运行以下命令:bashCopy codeuvicorn app:app --reload这将启动一个ASGI服务器,并在本地主机的8000端口上运行我们的应用程序。...在命令行中运行以下命令:bashCopy codeuvicorn main:app --reload这将启动一个ASGI服务器,并在本地主机的8000端口上运行我们的应用程序。...我将为你提供另一个示例,演示如何使用daphne作为ASGI服务器来运行一个基于Django框架的异步应用程序。首先,确保你已经安装了Python和pip。...在命令行中运行以下命令:bashCopy codedaphne async_project.asgi:application这将启动一个ASGI服务器,并在本地主机的8000端口上运行我们的应用程序。

    2.5K00
    领券