小编Zho*_*ndr的帖子

我如何结合烧瓶和nameko?

我如何结合Flask Web应用程序和Nameko微服务?

让我给你一些背景信息.我有基于烧瓶(http://flask.pocoo.org)的Web应用程序.此应用程序可以执行很长(5-10分钟)的任务.我希望能够在此应用程序仍在运行时编写并附加其他模块.如果我在开发过程中停止应用程序是可以的,但我无法在生产中停止它.

我对Nameko(https://nameko.readthedocs.org)没有任何经验,它是解决我问题的最佳方案吗?如果是这样 - 我可以混合使用Flask app和Nameko微服务吗?

python flask nameko

14
推荐指数
1
解决办法
4260
查看次数

如何使用jenkins docker容器安装docker卷?

我在jithub上运行容器和项目源代码中的jenkins.

我需要在与jenkins相同的主机上运行容器中的项目,但不是作为docker-in-docker,我想将它们作为兄弟容器运行.

我的管道看起来像这样:

  1. 从github拉出源代码
  2. 构建项目图像
  3. 运行项目容器

我现在做的是使用jenkins容器的主机docker socket:

/var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

当jenkins容器将带有/ var/jenkins_home/workspace/BRANCH_NAME的源代码的卷挂载到项目容器时,我遇到问题:

volumes:
 - ./servers/identity/app:/srv/app
Run Code Online (Sandbox Code Playgroud)

我在项目容器中获取空文件夹"/ srv/app"

我最好的猜测是,docker试图从主机而不是jenkins容器安装它.

所以问题是:我如何明确设置容器从哪个装载卷?

continuous-integration jenkins docker

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

如何使用相同的URL为GET和POST请求设置不同的permission_classes?

我正在使用 DRF(Django Rest Framework)构建端点。

django==2.1.5
djangorestframework==3.9.1
django-rest-auth
djangorestframework-jwt
Run Code Online (Sandbox Code Playgroud)

我有模型“Item”,我想为 GET 和 POST 请求设置不同的permission_classes。

我是这样做的:

@csrf_exempt
@api_view(['GET', 'POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([AllowAny])
def item_list(request):
    if request.method == 'GET':
        items = Item.objects.all()
        serializer = ItemSerializer(items, many=True)
        return JsonResponse(serializer.data, safe=False)

    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = ItemSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)
Run Code Online (Sandbox Code Playgroud)

我想对所有方法使用一个端点,如下所示:

urlpatterns = [
    path('api/item/', views.item_list),
    path('api/item/<int:pk>/', views.item_details),
]
Run Code Online (Sandbox Code Playgroud)

我想AllowAny用户GET请求方法并检查是否isAdminUser请求POST方法

我可以像 Flask 那样,即一种方法用一个装饰器吗?

python django django-rest-framework

4
推荐指数
1
解决办法
5555
查看次数

如何强制 redirect_uri 在 python-social-app 中使用 HTTPS?

我正在使用带有 python-social-app 的 django 框架,并且在尝试使用 Facebook 登录按钮登录时出错。

我的应用程序由三个 docker 容器组成:

  1. 姜戈应用程序。
  2. 数据库。
  3. NGINX + SSL 证书。

这是我的错误:

身份验证过程已取消:URL 已阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。确保客户端和 Web OAuth 登录已打开,并将您的所有应用程序域添加为有效的 OAuth 重定向 URI。块引用

这是我在尝试登录时可以看到的 URL

https://www.facebook.com/v2.9/dialog/oauth?client_id=247739632734206&redirect_uri=http%3A%2F%2Fwww.DOMAN_NAME.com%2Fcomplete%2Ffacebook%2F&state=7AySpKwDWAKtiIxP75LBIP3scopesqwy=

正如我所看到的,问题是 redirect_uri 以 HTTP 而不是 HTTPS 开头。

Django==2.2
social-auth-app-django==3.1.0
social-auth-core==3.1.0
Run Code Online (Sandbox Code Playgroud)

我对这个问题的最佳猜测是 Django 应用程序不“知道”它在 NGINX+SSL 后面运行,并使用 HTTP 协议而不是 HTTPS 生成 redirect_uri。

Facebook 设置具有以 HTTPS 开头的正确重定向 URI。这个问题不是 Facebook 特有的,Google 的 redirect_uri 也有同样的问题。

如何强制 python-social 使用 HTTPS?

django google-login oauth-2.0 facebook-login python-social-auth

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

从第二个元素开始枚举元素列表

我有这个清单

[['a', 'a', 'a', 'a'],
 ['b', 'b', 'b', 'b', 'b'],
 ['c', 'c', 'c', 'c', 'c']]
Run Code Online (Sandbox Code Playgroud)

我想从第二行开始连接每一行中的第二个和第三个元素,以制作如下内容:

[['a', 'a', 'a', 'a'],
 ['b', 'bb', 'b', 'b'],
 ['c', 'cc', 'c', 'c']]
Run Code Online (Sandbox Code Playgroud)

当我对每一行都这样做时,它似乎工作正常:

for index, item in enumerate(list_of_lines, start=0):
    list_of_lines[index][1:3] = [''.join(item[1:3])] 
Run Code Online (Sandbox Code Playgroud)

但是当我从第二行开始时 - 我有“列表索引超出范围”错误:

for index, item in enumerate(list_of_lines, start=1):
    list_of_lines[index][1:3] = [''.join(item[1:3])] 
Run Code Online (Sandbox Code Playgroud)

python enumerate

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

使用kubernetes进行本地开发的最佳做法是什么?

我正在使用docker容器,并为本地开发和生产环境提供docker-compose文件.我想为我的新应用程序和特别是Google Kubernetes Engine试用Google Cloud Platform.我的工具是Docker for Mac,在本地机器上使用Kubernetes.

对于开发人员而言,能够更改代码并查看本地开发的实时更改非常重要.

用例:

  1. 后端开发人员对基本的Flask API(或您使用的任何内容)进行更改,并应立即看到重新加载应用程序的更改.

  2. 前端开发人员对HTML布局进行更改,并应立即在网页上看到更改.

目前我使用docker-compose文件将源代码安装到本地容器.但是Kubernetes不支持安装源代码的相对路径.

理想情况下,我应该能够设置变量

Deployment.spec.templates.spec.containers.volumes.hostPath

作为我的回购的相对路径.例如,在我们的团队开发人员克隆回购到此文件夹:

/用户/ BACKEND_developer /代码/ project_repo

/用户/ FRONTEND_developer /代码/ project_repo

显然,在对源代码进行每次微小更改后,您都无法提交和构建映像.

那么Kubernetes的本地开发最佳实践是什么?我是否需要一些额外的工具来为每个开发人员修改.yaml文件?

docker google-cloud-platform kubernetes

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