我正在使用 kivy 为应用程序制作一个非常简单的 gui。没有什么复杂的,非常简单的布局。
尽管如此,我在使用 TextInputs 时遇到了困难......它们总是以全高显示,我无法使它们调整为“合理”的文本高度,例如高度。
我正在使用 kv 文件样式,因为我发现将它集成到现有应用程序中更简洁、更容易……我想尽可能减少应用程序的 gui-python 代码。
这是我为 TextInput 得到的(无用添加 gui 的其他部分)。
Python代码
# textInput.py
from kivy import require
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang.builder import Builder
Builder.load_file('path/to/kv/file/textInput.kv')
require('1.10.0')
class MainScreen(BoxLayout):
pass
class Test(App):
def build(self):
self.title = 'Testing textInput'
return MainScreen()
if __name__ == '__main__':
Test().run()
Run Code Online (Sandbox Code Playgroud)
KV代码
# textInput.kv
<MainScreen>
orientation: 'vertical'
# Third section title
Label:
size_hint: (1, .1)
text: 'Setup Connection'
font_size: 25
# Third section Box
BoxLayout: …Run Code Online (Sandbox Code Playgroud) 我正在使用 Orange Pi PC PLUS2(emmc 内存,arv7l 32 位)通过串行连接(RS485)和使用 FTDI 芯片(sparkfun bob 09822)的串行转换器控制另一台设备。
我正在使用 docker 容器和 docker-compose 来嵌入我的应用程序并轻松部署/共享它。它没有做任何太复杂的事情,只是通过 rs485 从传感器连续读取(每半秒 1 个)值,将其存储在本地数据库中并将数据发送到我的服务器。
uname -a 给我:
Linux host-test 4.14.15-sunxi #28 SMP Mon Jan 29 07:24:48 CET 2018 armv7l GNU/Linux
Run Code Online (Sandbox Code Playgroud)
如果我在 docker 之外运行我的软件,一切正常,几周后我不会遇到任何崩溃。问题是,如果我使用 docker,几天之内我会收到以下错误 (dmesg):
[135431.500807] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
[137213.011801] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
[138650.664850] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
[140559.020691] ohci-platform 1c1b400.usb: frame counter not updating; disabled
[140559.020972] ohci-platform 1c1b400.usb: …Run Code Online (Sandbox Code Playgroud) 我有一个可能是一个非常无用的问题,但尽管如此,我觉得我遗漏了一些对于理解 asyncio 工作原理可能很重要的东西。
我刚刚开始熟悉 asyncio,我编写了这段非常基本的代码:
import asyncio
import datetime
from random import randint
async def coroutine(i):
start = datetime.datetime.now()
print('coroutine {} started.'.format(i))
n = randint(1, 11)
await asyncio.sleep(n)
end = datetime.datetime.now()
print('coroutine {} finished after {} with random = {}.'.format(i, (end-start).seconds, n))
return i
def simple():
loop = asyncio.get_event_loop()
cors = [coroutine(x) for x in range(20)]
loop.run_until_complete(asyncio.wait(cors))
if __name__ == '__main__':
simple()
Run Code Online (Sandbox Code Playgroud)
这是我得到的一个结果:
coroutine 3 started.
coroutine 9 started.
coroutine 15 started.
coroutine 4 started.
coroutine 10 started.
coroutine 16 …Run Code Online (Sandbox Code Playgroud) 我在 Terraform 中使用 helm_release 资源时遇到问题。
我基本上部署了一个kube-prometheus-stack包含许多k8s资源并且运行顺利的。
当我尝试销毁(或删除)这部分时,问题出现了,因为卸载图表时 Helm 不会删除所有资源(这可能与某些垃圾收集规则有关,这些规则使它们在删除后保持正常运行)。这意味着我最终得到:
我之前问过一个问题(现在我要结束了),涉及了解这是否是 Helm 的问题(实际上不是,根据设计,它会尽可能删除所有内容,我不确定图表中是否可以做一些事情,但是无论如何,我假设现在不会很快完成)现在我想问是否有人知道如何直接从 Terraform 管理它。
例如,当资源被销毁时,我可以使用某些东西kubectl delete在标记的资源(或者可能是整个命名空间)上运行命令吗?helm_release
注意:我没有添加任何代码,因为这与代码无关,但更多的是寻找一些钩子或黑客仅在销毁后运行清理。
ps:我还尝试在应用后利用 Terraform 云挂钩,但我更愿意根据 Terraform Cloud 来解决这个问题,无论如何,我没有设法创建对是否已被helm_release销毁的依赖关系。
kubernetes terraform kubernetes-helm terraform-cloud terraform-provider-helm
我最近发布了一个有关如何仅允许从VPC内的EC2实例调用AWS Lambda函数的问题。通过将带有“ AWS lambda角色”策略的IAM角色附加到EC2实例,我设法使其正常工作,现在我可以使用boto3调用lambda函数。
现在,我想使用asyncio await语法异步调用lambda函数。我读到lambda函数通过设置提供了一个异步版本InvokeType='Event',但是实际上使调用立即返回而没有得到函数的结果。
由于函数需要一些时间,因此我想并行启动许多函数,因此我想避免在等待函数返回时阻塞执行。
我尝试使用aiobotocore,但这仅支持基本的“ s3”服务功能。
解决这个问题的最佳方法(谦虚)是使用AWS API Gateway服务通过GET / POST请求调用lambda函数,该请求可以使用aiohttp轻松处理。
但是,我无法使其正常运行。
我在EC2 IAM角色中添加了策略“ AmazonAPIGatewayInvokeFullAccess”,但每次尝试执行以下操作:
import requests
r = requests.get('https://url_to_api_gateway_for_function')
Run Code Online (Sandbox Code Playgroud)
我得到禁止的回应<Response [403]>。
我直接使用lambda函数中的触发器创建了API网关。
我还尝试编辑API网关设置,方法是在函数路径中添加post方法并设置“ AWS_IAM”身份验证,然后将其部署为“ prod”部署。仍然是相同的禁止响应。当我通过“ API网关上的测试屏幕”对其进行测试时,它可以正常工作。
任何想法如何解决这个问题?我错过了一步吗?
amazon-web-services python-3.x python-asyncio boto3 aws-lambda
arm ×1
aws-lambda ×1
boto3 ×1
coroutine ×1
docker ×1
ftdi ×1
kivy ×1
kubernetes ×1
orange-pi ×1
python ×1
python-3.5 ×1
python-3.x ×1
terraform ×1