我有一个运行python 2.7.7的virtualenv.它有一套非常广泛的库,支持一组非常复杂的专有模块.换句话说,virtualenv需要保持其完整性.这当然是virtualenv的重点.
最近,我遇到了许多使用Anaconda很容易解决的问题.我在测试环境中尝试了它并且它运行得很好.现在我的任务是将这种新配置融入生产中.我不清楚如何将Anaconda纳入virtualenv,或者这是否是一个好主意.事实上,在我看来,我似乎应该使用anaconda安装作为新的源代码并解构旧的virtualenv ...将它所拥有的库合并到conda中.
有没有人建议最好的方法?如果要求合并环境,任何人都可以指出如何解决这个问题的解释吗?
我很好奇您应该如何表达您希望将消息快速传递到 Kafka 主题。他们自述文件中的示例似乎没有写入主题:
import faust
class Greeting(faust.Record):
from_name: str
to_name: str
app = faust.App('hello-app', broker='kafka://localhost')
topic = app.topic('hello-topic', value_type=Greeting)
@app.agent(topic)
async def hello(greetings):
async for greeting in greetings:
print(f'Hello from {greeting.from_name} to {greeting.to_name}')
@app.timer(interval=1.0)
async def example_sender(app):
await hello.send(
value=Greeting(from_name='Faust', to_name='you'),
)
if __name__ == '__main__':
app.main()
Run Code Online (Sandbox Code Playgroud)
我希望hello.send在上面的代码中向该主题发布一条消息,但似乎没有。
有很多从主题中读取的示例,以及许多使用 cli 推送 ad-hoc 消息的示例。梳理文档后,我没有看到任何明确的代码发布主题示例。我只是疯了,上面的代码应该可以工作吗?
我对我们的气流 ui 中的某些东西感到非常困惑。在树视图(和图形视图)中,dag 指示已失败。然而,它的所有成员任务似乎都成功了。您可以在下面看到它(倒数第三个):
有谁知道这是怎么可能的,它意味着什么,或者人们将如何调查它?
我有一个烧瓶api,我把它包裹在一个物体里.这样做使得单元测试变得轻而易举,因为我可以使用各种不同的设置来实例化api,具体取决于它是在生产,测试还是生产中.
我现在正在尝试扩展api,为此我正在使用蓝图.问题是我无法弄清楚如何将参数传递给蓝图.我的路由需要访问哪些数据库等信息,并且该信息不是静态的.如何将此信息传递到蓝图中?我在下面列出了代码作为示例:
api.py:
class MyApi(object):
def __init__(self, databaseURI):
self.app = Flask(__name__)
self.app.register_blueprint(myblueprint)
Run Code Online (Sandbox Code Playgroud)
blueprint.py
myblueprint= Blueprint('myblueprint', __name__)
@myblueprint.route('/route', methods=['GET'])
def route():
database = OpenDatabaseConnection(databaseURI)
Run Code Online (Sandbox Code Playgroud)
这里有一个相关的问题: 如何将构造函数参数传递给Flask蓝图?
但是回答这个问题的人解决了op的用例特定问题而没有真正回答如何将任意参数传递给蓝图的问题.
我正在构建一个 api,如果用户请求它可以返回资源的子级。例如,user有messages. 我希望查询能够限制message返回的对象数量。
我发现了一个有用的技巧aboutl imiting在子集合对象的数量在这里。基本上,它表示以下流程:
class User(...):
# ...
messages = relationship('Messages', order_by='desc(Messages.date)', lazy='dynamic')
user = User.query.one()
users.messages.limit(10)
Run Code Online (Sandbox Code Playgroud)
我的用例涉及有时会返回大量用户。
如果我要遵循该链接中的建议并使用,.limit()那么我将需要遍历调用.limit()每个用户的整个用户集合。这比LIMIT在创建集合的原始 sql 表达式中使用效率低得多。
我的问题是,是否有可能使用声明来有效地(N+0)加载大量对象,同时使用 sqlalchemy 限制其子集合中的子集合的数量?
更新
需要明确的是,以下是我试图避免的。
users = User.query.all()
messages = {}
for user in users:
messages[user.id] = user.messages.limit(10).all()
Run Code Online (Sandbox Code Playgroud)
我想做一些更像:
users = User.query.option(User.messages.limit(10)).all()
Run Code Online (Sandbox Code Playgroud) 我想Dockerfiles在github上找到的远程项目中使用构建服务.这是一个端到端的测试框架,所以我需要能够指定我想要构建的特定提交.我在尝试弄清楚如何提取特定提交时遇到了很多困难.
我有一个docker compose文件,看起来像这样:
version: '3'
services:
web:
build: https://${GITHUB_ACCESS}:@github.com/mycompany/web.git#${COMMIT_SHA}
Run Code Online (Sandbox Code Playgroud)
如果我省略,上述工作正常#${COMMIT_SHA}.不幸的是,如果我为我所关心的特定提交包含sha,我会收到以下错误:
ERROR: error fetching: error: no such remote ref <commit sha>
: exit status 128
Run Code Online (Sandbox Code Playgroud)
我确信沙存在,我已经和其他几个人一起尝试过以确定.我在这里得到的语法错误,或者docker-compose不支持引用特定的提交?
我们为各种python模块使用中央类模型.此模型使用SQLAlchemy定义.这些类都继承自declarative_base.
例如,我们的模型定义如下所示:
Base = declarative_base()
class Post(Base):
__tablename__ = 'Posts'
id = Column(INT, primary_key=True, autoincrement=True)
body = Column(TEXT)
timestamp = Column(TIMESTAMP)
user_id = Column(INT, ForeignKey('Users.uid'))
Run Code Online (Sandbox Code Playgroud)
我们一直在构建一个烧瓶网络应用程序,我们在其中使用相同的模型.我们发现了一个棘手的问题,因为flask-sqlalchemy似乎是以这样的方式设计的,它希望通过传入会话的活动实例来定义其模型中使用的所有类.以下是"适当的"flask-sqalchemy类模型定义的示例:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
Run Code Online (Sandbox Code Playgroud)
请注意,flask-sqlalchemy的上述示例需要已经实例化的sql会话.这让我们感到震惊,因为我们完全不知道如何将我们的SqlAlchemy模型集成到烧瓶中.我们真的想特别使用flask-security套件.
这个问题在SO之前提出过.这里,例如: 如何使用现有sqlalchemy模型的flask-sqlalchemy?
我们的要求与那些接受回复的人的要求不同.响应指出一个人失去了使用User.query的能力,但这正是我们必须保留的事情之一.
放弃我们漂亮,优雅,中心阶级的模型定义,而不是使用flask-sqlalchemy所需要的东西是不可行的.我们有什么方法可以将我们的模型与SQLAlchemy()对象相关联吗?在我们的类上获取.query()方法的加分点似乎是flask-security所需要的.
我似乎无法找到任何关于此的文档.如何更改弹性豆秆环境的VPC?我已尝试将安全组从当前组更改为新VPC中的组,但亚马逊返回以下错误:
SecurityGroups: Invalid option value: 'sg-a91f43d2' (Namespace: 'aws:autoscaling:launchconfiguration', OptionName: 'SecurityGroups'): The security group 'sg-a91f43d2' does not exist
Run Code Online (Sandbox Code Playgroud)
规则确实存在,所以我认为它是抱怨的,因为规则在不同的VPC(这是整点).
我已经使用此处的说明将docker-compose设置为pycharm中的远程解释器.
docker-compose构建工作正常,但是当尝试使用此解释器运行测试时,我收到以下错误:
Testing started at 12:13 AM ...
docker-compose://[/home/melchoir55/gitrepos/python_rest/docker-compose.yml]:python_rest/python -u /opt/.pycharm_helpers/pycharm/_jb_unittest_runner.py --path /opt/project/tests
Traceback (most recent call last):
File "bin/docker-compose", line 6, in <module>
File "compose/cli/main.py", line 71, in main
File "compose/cli/main.py", line 124, in perform_command
File "compose/cli/command.py", line 38, in project_from_options
File "compose/cli/docker_client.py", line 84, in tls_config_from_options
File "site-packages/docker/tls.py", line 81, in __init__
docker.errors.TLSParameterError: Path to a certificate and key files must be provided through the client_config param. TLS configurations should map the Docker CLI client configurations. …Run Code Online (Sandbox Code Playgroud) 我有一个自定义框架,它为不同的客户端运行不同的代码。我对某些方法进行了猴子修补,以便为客户定制功能。
这是简化的模式:
#import monkeypatches here
if self.config['client'] == 'cool_dudes':
from app.monkeypatches import Stuff
if self.config['client'] == 'cool_dudettes':
from app.monkeypatches import OtherStuff
Run Code Online (Sandbox Code Playgroud)
这是一个补丁示例:
from app.framework.stuff import Stuff
def function_override(self):
return pass
Stuff.function = function_override
Run Code Online (Sandbox Code Playgroud)
当程序以批处理方式执行时,这种方法效果很好,每次都从头开始旋转。然而,当运行单元测试时,我发现猴子补丁在测试中持续存在,导致意外的行为。
我意识到使用面向对象的继承方法来进行这些重写会好得多,但我继承了这个代码库,并且目前无权重新构建它到那种程度。
除非正确地重新构建程序,否则如何防止这些猴子补丁在单元测试中持续存在?
python ×8
docker ×2
flask ×2
sqlalchemy ×2
airflow ×1
amazon-vpc ×1
anaconda ×1
apache-kafka ×1
arguments ×1
blueprint ×1
build ×1
conda ×1
declarative ×1
faust ×1
git ×1
github ×1
limit ×1
oop ×1
pycharm ×1
unit-testing ×1
virtualenv ×1