当我跑python manage.py shell,然后:
from django.core.cache import cache
cache.set("stack","overflow",3000)
print cache.get("stack")
(output: ) None
Run Code Online (Sandbox Code Playgroud)
我尝试重启memcache,这就是我的设置:
CACHES = {
'default' : {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : '127.0.0.1:11211',
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Nginx反向代理服务器后面部署django通道支持的通知应用程序,以仅为websocket通信提供服务,同时让Nginx + uWSGI设置为django应用程序提供服务.
该应用程序在我的本地机器无缝工作时无论是运行python manage.py runserver --noasgi+ daphne -p 8000 myproject.asgi:application或python manage.py runserver与daphne内部处理所有的请求.
问题:
所有websocket请求都被路由到http协议类型而不是websocket协议类型,并返回WebSocket connection to 'ws://ip_address/ws/' failed: Error during WebSocket handshake: Unexpected response code: 404
已安装的软件包:
Django==2.0.3
channels==2.0.2
channels-redis==2.1.1
daphne==2.1.0
asgiref==2.3.0
Twisted==17.9.0
aioredis==1.0.0
autobahn==18.4.1
Run Code Online (Sandbox Code Playgroud)
环境:
Ubuntu - 16.04
Nginx - 1.12.0
Run Code Online (Sandbox Code Playgroud)
用于升级请求的Nginx配置:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# the upstream component nginx needs to connect to websocket requests
upstream websocket {
server …Run Code Online (Sandbox Code Playgroud) 我想编写一个通用函数来处理Django为多个模型发出的post_save信号.
models.py
Class FirstModel(models.Model):
pass
Class AnotherModel(models.Model):
pass
Class YetAnotherModel(models.Model):
pass
Run Code Online (Sandbox Code Playgroud)
对于我的models.py中的一些模型(FirstModel,AnotherModel),我需要编写一个可以在保存后执行一些常见操作的函数.
AFAIK,我可以编写两个处理函数来接收发出的信号并执行常见操作.
signals.py
@receiver(post_save, sender=FirstModel)
def first_model_post_save_handler(sender, **kwargs):
pass
@receiver(post_save, sender=AnotherModel)
def another_model_post_save_handler(sender, **kwargs):
pass
Run Code Online (Sandbox Code Playgroud)
但是我有兴趣了解任何更好的解决方案,使其像配置一样.
configuration.py
MODELS_TO_BE_POST_SAVE_HANDLED = ['FirstModel', 'AnotherModel']
Run Code Online (Sandbox Code Playgroud)
singals.py
@receiver(post_save, sender=MODELS_TO_BE_POST_SAVE_HANDLED)
def first_model_post_save_handler(sender, **kwargs):
pass
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)