标签: wsgi

如何让Django管理URL只能访问localhost?

使Django/admin/urls只能访问localhost的最简单方法是什么?

我想到的选项:

  • 将管理站点分离出项目(以某种方式)并作为不同的虚拟主机运行(在Apache2中)
  • 在托管(Apache2)Web服务器前使用代理
  • 以某种方式限制WSGI中的Apache中的URL.

有标准方法吗?

谢谢!

python apache django wsgi django-wsgi

3
推荐指数
1
解决办法
1808
查看次数

Python:(msg = email.message_from_string(aaa))尝试从原始电子邮件源解析东西时返回值(无)

让我们执行脚本

python b.wsgi
Run Code Online (Sandbox Code Playgroud)

结果是:

None
None
Run Code Online (Sandbox Code Playgroud)

这是问题,这是完整的脚本 b.wsgi

aaa = """
From root@a1.local.tld Thu Jul 25 19:28:59 2013
Received: from a1.local.tld (localhost [127.0.0.1])
    by a1.local.tld (8.14.4/8.14.4) with ESMTP id r6Q2SxeQ003866
    for <ooo@a1.local.tld>; Thu, 25 Jul 2013 19:28:59 -0700
Received: (from root@localhost)
    by a1.local.tld (8.14.4/8.14.4/Submit) id r6Q2Sxbh003865;
    Thu, 25 Jul 2013 19:28:59 -0700
From: root@a1.local.tld
Subject: oooooooooooooooo
To: ooo@a1.local.tld
Cc: 
X-Originating-IP: 192.168.15.127
X-Mailer: Webmin 1.420
Message-Id: <1374805739.3861@a1>
Date: Thu, 25 Jul 2013 19:28:59 -0700 (PDT)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="bound1374805739"

This …
Run Code Online (Sandbox Code Playgroud)

python mod-wsgi wsgi python-2.7

3
推荐指数
1
解决办法
2508
查看次数

(py)zmq/PUB :是否可以立即调用 connect() 然后 send() 并且不会丢失消息?

使用此代码,我总是丢失消息:

def publish(frontend_url, message):
    context = zmq.Context()
    socket = context.socket(zmq.PUB)
    socket.connect(frontend_url)
    socket.send(message)
Run Code Online (Sandbox Code Playgroud)

但是,如果我引入一个短睡眠(),我可以得到消息:

def publish(frontend_url, message):
    context = zmq.Context()
    socket = context.socket(zmq.PUB)
    socket.connect(frontend_url)
    time.sleep(0.1)  # wait for the connection to be established 
    socket.send(message)
Run Code Online (Sandbox Code Playgroud)

有没有办法确保在调用 connect() 和 send() 之间不休眠的情况下传递消息?

恐怕我无法预测睡眠时长(网络延迟等)

更新:

上下文:我想将数据更新从Flask REST 应用程序发布到消息代理(例如,在资源创建/更新/删除时)。

目前,消息代理是使用 0mq FORWARDER 设备起草的

我知道 0mq 旨在抽象 TCP 套接字和消息传递的复杂性。

在连接长期存在的情况下,我可以使用它。但是,当在 gunicorn 或 uwsgi 等应用程序容器中运行我的 Flask 应用程序时,我有 N 个工作进程,我不能指望连接和进程是长期存在的。

据我了解,我应该使用真正的消息代理(如 RabbitMQ)并使用同步客户端在那里发布消息。

python wsgi zeromq flask pyzmq

3
推荐指数
1
解决办法
1503
查看次数

如何在python中解析HTTP请求中的参数的空值?

param1=value1&param2=&param3=value3使用urllib.parse.parse_qs(python 3 wsgi应用程序)解析以下请求,但此函数返回仅带param1param3键的dict .我可以使用什么功能来获得空param2

python wsgi urllib python-3.x python-3.2

3
推荐指数
1
解决办法
1142
查看次数

如何使用WSGI实现Flask应用程序调度?

我想将单个域用作多个烧瓶应用程序的临时环境,这些应用程序最终将在自己的域上运行.

就像是:

  • example_staging.com/app1
  • example_staging.com/app2
  • example_staging.com/app3

哪里:

  • example_staging.com/app1与app1.example_staging.com的行为相同
  • example_staging.com/app2与app2.example_staging.com的行为相同
  • example_staging.com/app3与app3.example_staging.com的行为相同

要么:

  • example_staging.com/app1与app1.com的行为相同
  • example_staging.com/app2与app2.com的行为相同
  • example_staging.com/app3与app3.com的行为相同

入门应用:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from Flask!'
Run Code Online (Sandbox Code Playgroud)

WSGI Starter配置文件:

import sys

project_home = u'/home/path/sample1'

if project_home not in sys.path:
    sys.path = [project_home] + sys.path

from app import app as application
Run Code Online (Sandbox Code Playgroud)

指的是:

http://flask.pocoo.org/docs/0.10/patterns/appdispatch/

我不知道在文档中给出的代码添加位置作为示例,以及create_app,default_app,get_user_for_prefix应该是什么样子.

注意:使用PythonAnywhere

Glenns输入后的WSGI配置文件:

import sys

# add your project directory to the sys.path
project_home = u'/home/path/app1'
if project_home not in sys.path:
    sys.path = [project_home] + sys.path …
Run Code Online (Sandbox Code Playgroud)

python wsgi path dispatch flask

3
推荐指数
2
解决办法
2824
查看次数

运行 WSGISOAPHandler 时出现“AssertionError: write() 参数必须是字节实例”

我在 Python 3 中有一个带有 pysimplesoap 的 SOAP 服务器。

代码

from wsgiref.simple_server import make_server

application = WSGISOAPHandler(dispatcher)
wsgid = make_server('', 8008, application)
wsgid.serve_forever()
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会出现以下错误。

错误

Traceback (most recent call last):
  File "/usr/lib/python3.4/wsgiref/handlers.py", line 138, in run
    self.finish_response()
  File "/usr/lib/python3.4/wsgiref/handlers.py", line 180, in finish_response
    self.write(data)
  File "/usr/lib/python3.4/wsgiref/handlers.py", line 266, in write
    "write() argument must be a bytes instance"
AssertionError: write() argument must be a bytes instance
Run Code Online (Sandbox Code Playgroud)

wsgi wsgiref python-3.x pysimplesoap

3
推荐指数
1
解决办法
2945
查看次数

WSGIRequest 对象没有属性 PUT

我正在尝试使用 curl 的 put 请求向本地服务器发出 put 请求:

curl -X PUT -H "Content-Type: application/json" -d '{"connid":"12"}' "127.0.0.1:8000/api/kill"
Run Code Online (Sandbox Code Playgroud)

我收到相同的回复:

'WSGIRequest' 对象没有属性 'PUT'

对于以下代码:

def kill(req):
  conid = req.PUT['connid']
  statusres = {}

  if conid in state:
    error[conid] = 'true'
    statusres['status'] = 'ok'

  else:
    statusres['status'] = 'invalid connection Id : '+ conid
  return JsonResponse(statusres)
Run Code Online (Sandbox Code Playgroud)

@csrf_exempt之前也用过这个函数。

python django json wsgi put

3
推荐指数
1
解决办法
4482
查看次数

如何在一个 python 程序下的两个端口上的两个线程/进程中运行两个烧瓶服务器?

我正在编写一个 python 调试库,它在一个新线程中打开一个烧瓶服务器,并提供有关它正在运行的程序的信息。当被调试的程序不是 Web 服务器本身时,这很好用。但是,如果我尝试与另一个在调试模式下运行的 Flask 服务器同时运行它,事情就会中断。当我尝试访问第二台服务器时,结果在两台服务器之间交替。

下面是一个例子:

from flask.app import Flask
from threading import Thread

# app1 represents my debugging library

app1 = Flask('app1')

@app1.route('/')
def foo():
    return '1'

Thread(target=lambda: app1.run(port=5001)).start()

# Cannot change code after here as I'm not the one writing it

app2 = Flask('app2')

@app2.route('/')
def bar():
    return '2'

app2.run(debug=True, port=5002)
Run Code Online (Sandbox Code Playgroud)

现在,当我在浏览器中访问http://localhost:5002/时,结果可能是12不是始终为2.

使用multiprocessing.Process而不是Thread具有相同的结果。

这是如何发生的,我该如何避免?烧瓶/werkzeug/WSGI 是不可避免的吗?我喜欢 Flask 的简单性,理想情况下希望继续使用它。如果这是不可能的,那么我可以使用且不会干扰同时运行的任何其他 Web 服务器的最简单的库/框架是什么?如果可能,我还想使用线程而不是进程。

python multithreading wsgi werkzeug flask

3
推荐指数
1
解决办法
3834
查看次数

github 存储库上烧瓶应用程序的 .wsgi 密钥的标准做法

我正在构建一个 Flask Web 应用程序,并希望将其放在 github 存储库中。

我注意到在 .wsgi 文件中

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/hashchain/")

from hashchain import app as application
application.secret_key = 'super secret key'
Run Code Online (Sandbox Code Playgroud)

有一个 application.secret_key 用于加密...

我猜测将flask web应用程序放在github上的标准方法包括克隆整个flask应用程序文件夹而不是.wsgi文件?

这样,贡献者可以在他们自己的本地主机上以调试模式自由运行 Flask 以进一步开发它,如果他们真的想要可以将它部署到他们自己的服务器(但必须编写他们自己的 .wsgi 文件和配置在他们的控制下的服务器) )。

这是正确的思考方式吗?我猜如果我把 .wsgi 文件放在 github 上,它会是黑客的开放季节吗?

  • 我也在猜测,如果我假设已经这样做了?在 github repo 上删除密钥后,我需要更改密钥,因为人们只需查看提交历史即可看到它!

wsgi github secret-key flask

3
推荐指数
1
解决办法
2020
查看次数

找不到部署 Heroku 的 WSGI 模块

尝试使用教程部署我的应用程序。有一个ModuleNotFoundError: No module named 'radio.wsgi'消息。

2019-08-21T08:08:21.409841+00:00 app[web.1]: __import__(module)
2019-08-21T08:08:21.409849+00:00 app[web.1]: ModuleNotFoundError: No module named 'radio.wsgi'
2019-08-21T08:08:21.409960+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-08-21T08:08:21.441211+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Shutting down: Master
2019-08-21T08:08:21.441415+00:00 app[web.1]: [2019-08-21 08:08:21 +0000] [4] [INFO] Reason: Worker failed to boot.
Run Code Online (Sandbox Code Playgroud)

在其他一些问题中人们推荐,python manage.py run_gunicorn但我有Unknown command: 'run_gunicorn'

简介:

web: gunicorn radio.wsgi --log-file -
Run Code Online (Sandbox Code Playgroud)

wsgi.py

2019-08-21T08:08:21.409841+00:00 app[web.1]: __import__(module)
2019-08-21T08:08:21.409849+00:00 app[web.1]: ModuleNotFoundError: No module named 'radio.wsgi'
2019-08-21T08:08:21.409960+00:00 app[web.1]: [2019-08-21 …
Run Code Online (Sandbox Code Playgroud)

python django wsgi heroku

3
推荐指数
1
解决办法
1221
查看次数