我正在尝试通过 API 网关建立 EC2 管理的 Websocket 连接,以进行授权并限制主机的暴露表面积。
目前,EKS 中运行着一项服务,其私有节点位于内部 NLB 后面。我可以直接通过 NLB 启动 websocket 会话(在网络内部)。如何将 API Gateway 置于此设置之前?
我尝试按照https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-nlb-for-vpclink-设置 RESTful API 网关,并将 NLB 作为 VPC 链接代理资源使用-console.html。但是,尝试建立 wss:// 连接会返回 301。
Websockets 类型的 API 网关似乎想要处理 websocket 连接本身,并独立处理每个新消息/请求。我无法找到一种方法让我的服务管理连接和所有传入消息/请求。
有没有办法实现这一点,或者我是否必须公开公开我的负载均衡器?
nlb amazon-web-services amazon-vpc couchbase-sync-gateway aws-api-gateway
StackOverflow 上的类似问题似乎都没有和我有同样的问题,我只找到了http://qnundrum.com/question/766895,但从未有人回答过。我正在运行 Python 3.3 和 Django 1.6,因此通常会自动处理 Unicode 内容。感谢我能得到的任何帮助。
我正在尝试将自动生成的电子书保存到我的数据库以供以后检索。一些书籍包含非 ASCII 字符。我已经让一代人失望了,.mobi 和 .epub 的工作按预期进行。这是models.py:
class StoryDownload(models.Model):
text = models.OneToOneField('stories.Story', primary_key=True, related_name='downloads')
epub = models.FileField(upload_to='epub/', blank=True, null=True)
mobi = models.FileField(upload_to='mobi/', blank=True, null=True)
def update_downloads(self):
#code to generate epub and mobi files from text
...
self.epub = File(open('filename.epub'), 'r'))
self.mobi = File(open('filename.mobi'), 'r'))
self.save()
...
Run Code Online (Sandbox Code Playgroud)
出现的错误self.save()让我感到困惑;如果文件被接受为 Django File 对象,那么为什么我不能保存它们?
追溯:
File "C:\Users\Chris\Envs\stories\lib\site-packages\django\core\handlers\base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Chris\Envs\stories\lib\site-packages\django\views\generic\base.py" in view
69. return self.dispatch(request, …Run Code Online (Sandbox Code Playgroud) 我正在使用Django 1.7.我有一个默认的自定义管理器,可以过滤"活动"布尔字段.根据文档,它需要是使用相关字段的默认管理器(即访问User.story_set仅显示活动的Story对象).我保留了管理员和shell访问的标准管理器,但我无法保存对象的更改,我猜测因为save()方法在某些时候通过默认管理器.
class Story(models.Model):
active = models.BooleanField(default=True)
....
objects = ActiveStoryManager()
full_set = models.Manager()
class ActiveStoryManager(models.Manager):
def get_query_set(self):
return super(ActiveStoryManager, self).get_query_set().filter(active=True)
use_for_related_fields = True
Run Code Online (Sandbox Code Playgroud)
这适用于所有面向公众的用途.但是,在admin和shell中,我无法影响非活动对象,包括将它们恢复为活动状态.
story = Story.full_set.get(id=#)将获取一个故事active=False,但在设置后active=True我无法保存,得到一个
django.db.utils.IntegrityError: duplicate key value violates unique constraint "stories_story_pkey"
DETAIL: Key (id)=(#) already exists.
致电save.(force_update=True)回报django.db.utils.DatabaseError: Forced update did not affect any rows.
因此,虽然save()是一个模型方法,但它似乎依赖于保存过程中某个时刻的默认管理器.
解决方法是使用Queryset API,例如Story.full_set.filter(id=#).update(active=True),但只能在shell中使用,并且需要手动键入每个更改,仍然无法在管理中保存非活动实例.
对此有何帮助?
编辑:
对我来说,更好的解决方案是使用权限系统,特别是因为我需要其他类型的对对象的受控访问。我现在使用Django-guardian来帮助获得这样的对象级权限。
原版的:
我正在通过允许用户上传故事以及让作者,发布者等来扩展标准django图书指南,在尝试让故事的作者(创作者)使用updateview的同时,让其他用户重定向离开。
在UpdateStory视图中修改get_object将其设置为关闭,但由于某种原因,回溯通过我的StoryForm 初始化。错误是'HttpResponseRedirect' object has no attribute '_meta'
views.py
class UpdateStory(LoginRequiredMixin, UpdateView):
model = Story
template_name = 'stories/story_update.html'
form_class = StoryForm
def get_object(self, queryset=None):
obj = super(UpdateStory, self).get_object()
if not obj.author == self.request.user:
return redirect(obj)
return obj
Run Code Online (Sandbox Code Playgroud)
表格
class StoryForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(StoryForm,self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我还很新,所以可能很明显,但是我已经找了几个小时,却很沮丧。
django ×3
amazon-vpc ×1
django-admin ×1
django-views ×1
nlb ×1
python ×1
python-3.x ×1
unicode ×1