是否有可能在Windows中作为服务运行Python脚本? 如果可能,如何?

我正在绘制一组共享存储在数据库中的各种相关对象的程序体系结构。 我希望其中一个程序充当一个服务,为这些对象提供更高层次的接口,其他程序通过该服务访问对象。 我目前正在将Python和Django框架作为实现该服务的技术。 我很确定我知道如何在Linux中对Python程序进行守护进程。 但是,系统应该支持Windows是一个可选的规格项目。 我几乎没有使用Windows编程的经验,也没有使用Windows服务的经验。 是否有可能运行一个Python程序作为Windows服务(即自动运行,而无需用户登录)? 我不一定要实现这个部分,但是我需要一个粗略的想法来决定是否按照这些方式来设计。 编辑:感谢迄今为止所有的答案,他们是相当全面的。 我想知道一件事情: Windows如何意识到我的服务? 我可以使用本地Windows实用程序来管理它吗? 在/etc/init.d中放入启动/停止脚本的等效功能是什么?

什么请求浏览器的“F5”和“Ctrl + F5”刷新生成?

在Web浏览器中, F5和Ctrl + F5触发的操作有标准吗? 我曾经在IE6和Firefox 2.x上做过实验。 F5刷新将触发一个HTTP请求,通过If-Modified-Since标题发送到服务器,而Ctrl + F5不会有这样的标题。 在我的理解中, F5会尝试尽可能多地使用缓存的内容,而Ctrl + F5则是放弃所有缓存的内容,然后再从服务器中检索所有的内容。 但今天,我注意到,在一些最新的浏览器(Chrome,IE8),它不再这样工作了。 F5和Ctrl + F5都发送If-Modified-Since标头。 那么这应该如何工作,或者(如果没有标准的话)主要浏览器如何实现这些刷新功能有什么不同?

为什么我的终端输出在运行纱线脚本时与其bash相同时不相同?

**注意:我已经添加更新,只要继续阅读,谢谢。 🙂 ** 我一直很好奇这个 – 请看看我的这个截图运行: ls -lah build ,和 yarn run assets ,运行ls -lah build 。 首先让我说这是一个在webpack中的WIP构建,所以不需要告诉我一个31M的bundle不是最优的。 🙂 但是为什么我会用本地命令获得颜色和更详细的字体,而不是在yarn执行命令的时候? 这可能是相关的:这个屏幕截图是: – Windows 10 – Webstorm终端 – 登录到运行Ubuntu 14.4的docker容器 谢谢! 🙂 **更新:–color =总是恢复颜色**作为@Charles Duffy建议,添加–color=always在纱线脚本中保存格式: 如果有人有一些专业知识来分享这里发生的事情,我在市场上听到它! 谢谢!

Docker网络未使用内联命令进行设置

当我在Docker容器内联运行一个命令时,看起来网络没有正确初始化: $ docker run ubuntu:14.04 /bin/bash -c "ip addr" 560: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state DOWN group default 注意“状态下降”。 如果我以交互模式运行Docker命令,然后启动一个bash提示符,但是,一切似乎都正常工作: $ docker run -it ubuntu:14.04 /bin/bash # ip addr 568: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 注意“状态UP”。 为什么会这样,而且还有无法在运行内联命令时设置网络?

Docker获取用户的真实IP

我有一个Flask网站在Docker容器中运行。 我想显示用户的IP地址给他们,但是它目前显示的是码头集装箱的IP地址,可能是由于它从码头转发。 我使用Flask的requests模块来检索IP地址。 它不应该有所作为,但我使用码头撰写。 version: '2' services: web: build: . ports: – "5000:5000" volumes: – .:/code redis: image: "redis:alpine" 这是使用Flask的网站的代码: from flask import Flask, request from redis import Redis app = Flask(__name__) redis = Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis.incr('hits') return 'Your IP is: {0}. I have been visited {1} times and \'foo\' […]

Docker运行/构建中的斜杠之前的路径? 为什么有一个点?

我正在关注入门页面。 我有几个我不明白的问题 docker build -t giantswarm/sparkexample . 我不遵循“巨人之路”和“巨人之路” . 在giantswarm/sparkexample docker run -d -p 4567:4567 giantswarm/sparkexample 码头运行同样的问题“巨人”

从远程服务器连接到码头应用程序

对于如何在Docker中管理端口和TCP连接有一个困惑(我认为)。 目前我有一个服务器A运行一些码头集装箱,我更感兴趣的是运行在4444端口的应用程序,当我输入docker container ls我得到: 4d2c0db7e23c oryd/hydra:latest "/bin/sh" 27 minutes ago Up 27 minutes 4444/tcp, 0.0.0.0:9010->4445/tcp determined_snyder 7c586393ef61 oryd/hydra:latest "/bin/sh -c '/go/b…" 34 minutes ago Up 34 minutes 0.0.0.0:9000->4444/tcp someContainer 所以, 1)我不知道它是如何读取4444/tcp, 0.0.0.0:9010->4445/tcp是什么意思? 然后,我有一个服务器B与其他应用程序(而不是码头)试图连接到正在侦听端口4444的容器,但我得到: connectex: No connection could be made because the target machine actively refused it. 2)它真的是在4444端口运行的应用程序? 这就是为什么有兴趣如何阅读的重点1 我必须说我输入了服务器A这个: sudo lsof -i -P -n和唯一与docker相关的寄存器显示: docker-pr […]

码头集装箱和主机之间的同步文件

情况是; 我有一个static文件夹,它包含一个名为sample_old.txt文件,并使用docker-compose.yml static文件安装到容器中。 然后,我使用docker-compose up启动我的docker服务。 然后调用一个函数在static文件夹内创建一个名为sample_new.txt的新文件。结果,它在静态内生成了新文件(通过使用sudo docker exec -it container_id bash进入容器进行验证)但是问题是,新生成的文件只在不在主机操作系统中的容器中可用。 我怎样才能提供容器内新生成的文件主机? 我可以一直同步目录吗? 我不知道是否可能。 如果可能请提供解决方案。 泊坞窗,compose.yml version: "3" services: web: build: context: . dockerfile: Dockerfile command: "python my_celery.py" ports: – "8000:8000" networks: – webnet volumes: – .:/celery_sample – /static:/celery_sample/static networks: webnet: 目录结构 – 主机操作系统 . ├── docker-compose.yml ├── Dockerfile ├── __init__.py ├── my_celery.py ├── README.md […]

为以下应用程序结构编写docker的正确方法是什么?

我在nodejs上运行了3个nodejs微服务。 其中一个运行在一个单独的子域中,另外两个基于路径进行路由。 我的Docker文件如下 FROM node:latest RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app EXPOSE 9000 CMD [ "npm", "start" ] 每个图像的端口是不同的。 在此之后,我有一个nginx运行裸机服务器上的所有配置反向代理服务器。 我知道这不是最好的方式。 我怎样才能有3个单独的实例运行,并在同一端口上侦听? 另外对于我正在使用的数据库链接 – 链接标志,但显示为在文档中折旧,什么是正确的方式来解决这个问题?

码头网桥模式下的Keycloak授权:如何访问本地主机?

应用程序上下文是一个具有mongo db的节点js应用程序,它使用keycloak服务器进行具有开放标识的授权。 对于开发环境,我们有一个mongo容器,一个keycloak容器和一个应用程序服务器容器。 Keycloak容器在8080上有一个端口映射,以便我可以访问http://localhost:8080上的keycloak配置控制台。 应用程序容器具有9000上的端口映射,以便在http://localhost:9000上访问应用程序本身。 所有的3个容器都在docker网络里面,像application_default (用docker compose开始)。 在应用程序中,使用keycloak的openid auth所需的信息由以下环境变量管理: # KEYCLOAK CREDENTIALS APP_KEYCLOAK_REALM="http://localhost:8080/auth/realms/myrealm" APP_KEYCLOAK_RETURN_URL="http://localhost:9000/api/auth/openid/return" APP_KEYCLOAK_CLIENT_ID=myapplication APP_KEYCLOAK_CLIENT_SECRET="00d5c908-eade-4e26-bcf0-b9341ghie197" 这些设置不起作用,通常实际上是在应用程序容器内部, localhost:8080的APP_KEYCLOAK_REALM值不引用我的PC(和keycloak),而是引用到应用程序容器中。 现在,当我更换 APP_KEYCLOAK_REALM="http://keycloak:8080/auth/realms/myrealm" 应用程序可以去keycloak,但然后进行身份验证,我的浏览器卡住试图重定向我授权到一个网址,对他来说没有任何意义,以http://keycloak:8080/auth/realms… 我设法使配置工作的唯一方法是把我的电脑的实际IP地址放在环境文件中: # KEYCLOAK CREDENTIALS APP_KEYCLOAK_REALM="http://192.168.1.34:8080/auth/realms/myrealm" APP_KEYCLOAK_RETURN_URL="http://192.168.1.34:9000/api/auth/openid/return" APP_KEYCLOAK_CLIENT_ID=myapplication APP_KEYCLOAK_CLIENT_SECRET="00d5c908-eade-4e26-bcf0-b9341ghie197" 这工作,但似乎并不理想的便携性(IP地址一直在改变)。 有没有一个标准的方法来做到这一点? 可能会重定向本地主机在码头的DNS到码头主机? 其他?