Articles of python

改变静态文件服务从烧瓶nginx?

我在nginx中运行我的烧瓶项目。 这是conf文件 server { listen 80; server_name site.in; root /root/site-demo/; access_log /var/log/site/access_log; error_log /var/log/site/error_log; location / { proxy_pass http://127.0.0.1:4000/; proxy_redirect http://127.0.0.1:4000 http://site.in; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 当我试图把过期部分静态文件进入conf它失败。 我读了这可能是由于静态文件是由瓶而不是nginx服务。 如果是的话,我应该把什么样的变化带到上面的conf文件中,以便我的项目可以通过nginx完成静态文件服务。 根据答案我改变了conf如下。 现在所有的静态文件显示403错误。 server { listen 80; server_name site.in; root /root/site-demo/; access_log /var/log/site/access_log; error_log /var/log/site/error_log; location / […]

部署aiohttp.web应用程序使用gunicorn和nginx

我试图部署一个aiohttpnetworking应用程序,但无法弄清楚如何让应用程序通过unix套接字服务,我认为我需要为了让nginx和gunicorn互相交谈。 aiohttp文档中保存为app.py的简单示例应用程序: import asyncio from aiohttp import web @asyncio.coroutine def hello(request): return web.Response(body=b'Hello') app = web.Application() app.router.add_route('GET', '/', hello) if __name__ == "__main__": loop = asyncio.get_event_loop() handler = app.make_handler() f = loop.create_server(handler, '0.0.0.0', 8080) srv = loop.run_until_complete(f) try: loop.run_forever() except KeyboardInterrupt: pass finally: loop.run_until_complete(handler.finish_connections(1.0)) srv.close() loop.run_until_complete(srv.wait_closed()) loop.run_until_complete(app.finish()) loop.close() 用gunicorn直接运行这个工作: gunicorn -k aiohttp.worker.GunicornWebWorker -b 0.0.0.0:8000 app:app […]

从Flask应用程序运行scrapy

我有一个爬行器,我想每次运行一个人去链接。 由于所有其他模块都在Flask中,所以我被告知在Flask中也可以创build它。 我已经在虚拟环境中安装了scrapy和selenium,并且在机器上全局安装了root。 当我通过terminal运行爬行器时,一切正常。 当我启动Flask应用程序并访问浏览器中的xx.xx.xx.xx:8080/whats时,这也可以正常运行,并运行我的搜寻器并获取文件。 但是,只要我上线,任何时候一个人去链接,它给我在浏览器内部错误。 为了运行爬虫,我们必须在terminal中键入“scrapy crawl whateverthespidernameis”。 我用Python的os模块做了这个。 这是我的烧瓶代码: import sys from flask import request, jsonify, render_template, url_for, redirect, session, abort,render_template_string,send_file,send_from_directory from flask import * #from application1 import * from main import * from test123 import * import os app = Flask(__name__) filename = '' app = Flask(__name__) @app.route('/whats') def whats(): os.getcwd() os.chdir("/var/www/myapp/whats") […]

Django,uwsgi,nginx,virtualenv,ImportError:没有名为site的模块

我有一个Django的应用程序和一个虚拟的env,我试着在nginx + uwsgi下运行它。 我已经configuration了整个系统,如下所述。 我也有CentOS 7。 但是,我得到着名的“ImportError:No module named site”。 这里没有其他的关于堆栈溢出的话题帮我解决了这个问题。 在uwsgi的日志中我有这两行: Set PythonHome to /hedgehog/.virtualenv/hedgehog ImportError: No module named site /etc/uwsgi/sites/hedgehog.ini: [uwsgi] project = hedgehog username = hedgehog base = /var/www/%(username)/code chdir = /var/www/hedgehog/code home = /%(username)/.virtualenv/%(username) module = %(username).wsgi:application master = true processes = 5 uid = %(username) socket = /run/uwsgi/%(project).sock chown-socket = […]

stream媒体服务器问题与gunicorn和烧瓶和Nginx

我正在使用gunicorn和烧瓶进行networking服务。 我试图让我的头在运行一个stream式路由(不知道这是否是正确的术语)。 我的路线如下所示: @app.route('/delay') def delay(): from time import sleep def delay_inner(): for i in range(10): sleep(5) yield json.dumps({'delay': i}) return Response(delay_inner(), mimetype="text/event-stream") 我预计服务器会在每次delay_inner产生收益时产生输出。 但是,我得到的是所有的JSON响应一次,只有当delay_inner完成执行。 我在这里错过了什么? –EDIT–我已经解决了Flask和Gunicorn的问题,我可以按照预期的方式使用烧瓶服务器运行,然后前往Gunicorn端口。 它按预期stream式传输数据。 不过,我应该在原帖中提到这一点,我也是在后面跑nginx。 这不是正确设置stream。 任何人都可以帮忙吗?

默默closures龙卷风的websockets

我有一个有一小时超时的nginx-server和一个Tornadonetworking服务器。 当nginxclosures连接,我不知道在龙卷风。 我看到了关于通过timeout-event( 实现和testingWebSocket服务器连接超时 )自动closures连接的问题,我将使用它作为备用解决方法。 我的问题是 :龙卷风是否有一个websocket连接失效的内部机制?

如何用Python编写Web应用程序?

我是一名前PHP开发人员,我正努力克服这种思维,我可以编写一个nginxconfiguration脚本,创build目录,启动nginx + PHP-FPM,上传我的代码并让它运行。 我想开始使用Python来获得它的感觉,并开始创buildWeb应用程序,但我有点失落,如何让它工作。 虽然有些人的build议总是会使用像Django这样的框架,但是我想看看这一切是如何从底层开始的。 我遇到了Python web服务器的比较,看来gevent就是我正在寻找的东西。 但是,这一切如何融合在一起呢? 我是否仍然需要nginx(除了静态内容)作为反向代理,还是我需要做一些不同的事情? 我正面临着“初学者失明”,我正在努力看到它们如何融合在一起。

在uwsgi + nginx后面的Django无法设置cookie

我正在为一个侧面项目膳食计划工具制定一个PoC。 我使用nginx和uwsgi在AWS上运行的django。 该网站正在运行和加载页面,但没有传递给浏览器的CSRF cookie。 CSRF和消息中间件都启用了,djangodebugging输出列出了“CSRF_COOKIE”的值,我的浏览器启用了cookie,所以我怀疑Django试图设置一个被nginx或uwsgi剥离的cookie。 configuration信息如下: uwsgi.ini [uwsgi] chdir=/opt/django/mealplanner/src/mealplanner/ module=mealplanner.wsgi:application master=True autoload=True pidfile=/opt/run/mealplanner.pid vacuum=True max-requests=5000 socket=/opt/run/mealplanner.sock chmod-socket=True harakiri=120 processes=1 home=/opt/django/mealplanner/src daemonize=/opt/log/uwsgi/mealplanner.log nginx.conf user www-data; worker_processes 1; pid /opt/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens […]

当使用nginx和fastcgi时,Django @login_required会导致redirect循环

我在settings.py中像这样设置了LOGIN_URL: LOGIN_URL = '/login/' 并在urls.py我和这URLConf: (r'^$', 'agent.index.redirect'), (r'^login/$', 'django.contrib.auth.views.login', {'template_name':'login.html'}), 和agent.index.redirect视图是这样的: @login_required def redirect(request): … 我运行我的Django网站是这样的: python manage.py runfcgi host=127.0.0.1 port=8090 –settings=settings nginx.conf是这样的: user nobody nobody; worker_processes 5; #error_log /var/log/nginx/error_log info; events { worker_connections 1024; use epoll; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr – $remote_user [$time_local] ' '"$request" $status $bytes_sent ' […]

由zeromq触发的nginx背后的Websockets?

我试图devise一个系统,将处理大量的数据,并发送更新到客户端的进展。 我想用nginx(谢天谢地,刚开始支持websockets)和uwsgi作为web服务器,并且用zeromq通过系统传递消息。 理想情况下,解决scheme可以用Python编写,但我也可以打开Nodejs甚至Go解决scheme。 这是我想要达到的stream程: 客户访问一个网站,并要求处理大量的数据。 服务器通过zeromq向另一个进程/服务器[工作人员]进行处理,然后回复客户机请求,说明处理已经开始,包括有关如何与服务器build立websocket的信息。 客户端设置websocket连接并等待更新。 处理完成后,工作人员发送“处理完成!” 消息通过zeromq传递给websocket进程,websocket进程将消息推送给客户端。 我所描述的可能是什么? 我想我以为我可以在皇帝模式下运行uwsgi,这样它就可以为web服务器处理一个进程(端口),为websocket进程处理另一个进程(端口)。 我只是不确定是否可以find一个方法来接收zeromq消息,并在同一个进程中pipe理websocket连接。 也许我必须从工人那里发起最后的websocket? 任何帮助/正确的方向指向/潜在的解决scheme将不胜感激。 任何样本或带有正确路由的websockets的nginxconfiguration文件的代码片段也将被赞赏。 谢谢!