小编syb*_*tic的帖子

AWS API Gateway 后面的 EC2 托管 WebSocket 连接?

我正在尝试通过 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

6
推荐指数
0
解决办法
522
查看次数

Django Filefield UnicodeDecodeError on model.save

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)

python django unicode django-models python-3.x

5
推荐指数
1
解决办法
2541
查看次数

Django,自定义管理器会影响保存方法吗?

我正在使用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 django-models django-admin django-managers

5
推荐指数
1
解决办法
965
查看次数

Django UpdateView中的对象所有权验证

编辑:

对我来说,更好的解决方案是使用权限系统,特别是因为我需要其他类型的对对象的受控访问。我现在使用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 django-views django-class-based-views

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