我如何结合Flask Web应用程序和Nameko微服务?
让我给你一些背景信息.我有基于烧瓶(http://flask.pocoo.org)的Web应用程序.此应用程序可以执行很长(5-10分钟)的任务.我希望能够在此应用程序仍在运行时编写并附加其他模块.如果我在开发过程中停止应用程序是可以的,但我无法在生产中停止它.
我对Nameko(https://nameko.readthedocs.org)没有任何经验,它是解决我问题的最佳方案吗?如果是这样 - 我可以混合使用Flask app和Nameko微服务吗?
我在jithub上运行容器和项目源代码中的jenkins.
我需要在与jenkins相同的主机上运行容器中的项目,但不是作为docker-in-docker,我想将它们作为兄弟容器运行.
我的管道看起来像这样:
我现在做的是使用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容器安装它.
所以问题是:我如何明确设置容器从哪个装载卷?
我正在使用 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-social-app 的 django 框架,并且在尝试使用 Facebook 登录按钮登录时出错。
我的应用程序由三个 docker 容器组成:
这是我的错误:
身份验证过程已取消:URL 已阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。确保客户端和 Web OAuth 登录已打开,并将您的所有应用程序域添加为有效的 OAuth 重定向 URI。块引用
这是我在尝试登录时可以看到的 URL
正如我所看到的,问题是 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
我有这个清单
[['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) 我正在使用docker容器,并为本地开发和生产环境提供docker-compose文件.我想为我的新应用程序和特别是Google Kubernetes Engine试用Google Cloud Platform.我的工具是Docker for Mac,在本地机器上使用Kubernetes.
对于开发人员而言,能够更改代码并查看本地开发的实时更改非常重要.
用例:
后端开发人员对基本的Flask API(或您使用的任何内容)进行更改,并应立即看到重新加载应用程序的更改.
前端开发人员对HTML布局进行更改,并应立即在网页上看到更改.
目前我使用docker-compose文件将源代码安装到本地容器.但是Kubernetes不支持安装源代码的相对路径.
理想情况下,我应该能够设置变量
Deployment.spec.templates.spec.containers.volumes.hostPath
作为我的回购的相对路径.例如,在我们的团队开发人员克隆回购到此文件夹:
/用户/ BACKEND_developer /代码/ project_repo
/用户/ FRONTEND_developer /代码/ project_repo
显然,在对源代码进行每次微小更改后,您都无法提交和构建映像.
那么Kubernetes的本地开发最佳实践是什么?我是否需要一些额外的工具来为每个开发人员修改.yaml文件?
python ×3
django ×2
docker ×2
enumerate ×1
flask ×1
google-login ×1
jenkins ×1
kubernetes ×1
nameko ×1
oauth-2.0 ×1