小编Noa*_*ith的帖子

App Engine:通过从blobstore提供缩略图来计算要生成的缩略图的尺寸

我目前正在使用blobstore为图像生成缩略图,但是,我喜欢在img标记中存储缩略图的尺寸,因为这是一种很好的做法,有助于加快渲染速度并使部分加载的页面看起来更好一些.

如何只计算原始图像的尺寸,如何计算blobstore生成的缩略图的尺寸?

我以前的尝试并不是很准确,大部分时间都是一两个像素(可能是由于四舍五入).

我知道获取缩略图而不是使用图像API检查尺寸会起作用,但我认为效率低下.

这是我目前用来计算它的代码,然而,它偶尔偏离一个像素,导致浏览器稍微拉伸图像,导致调整大小的文物以及性能较差.

from __future__ import division
def resized_size(original_width, original_height, width, height):
    original_ratio = float(original_width) / float(original_height)
    resize_ratio = float(width) / float(height)
    if original_ratio >= resize_ratio:
        return int(width), int(round(float(width) / float(original_ratio)))
    else:
        return int(round(float(original_ratio) * float(height))), int(height)
Run Code Online (Sandbox Code Playgroud)

准确性非常重要!

python google-app-engine thumbnails blobstore

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

Pika和gevent的随机超时错误

我一直试图通过使用Pika库(由gevent修补的猴子)在我的gevent程序中使用RabbitMQ,gevent喜欢随机抛出超时错误.

我该怎么办?我可以使用另一个图书馆吗?

WARNING:root:Document not found, retrying primary.
Traceback (most recent call last):
  ...
  File "/usr/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 32, in __init__
    BaseConnection.__init__(self, parameters, None, reconnection_strategy)
  File "/usr/lib/python2.7/dist-packages/pika/adapters/base_connection.py", line 50, in __init__
    reconnection_strategy)
  File "/usr/lib/python2.7/dist-packages/pika/connection.py", line 170, in __init__
    self._connect()
  File "/usr/lib/python2.7/dist-packages/pika/connection.py", line 228, in _connect
    self.parameters.port or  spec.PORT)
  File "/usr/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 44, in _adapter_connect
    self._handle_read()
  File "/usr/lib/python2.7/dist-packages/pika/adapters/base_connection.py", line 151, in _handle_read
    data = self.socket.recv(self._suggested_buffer_size)
  File "/usr/lib/python2.7/dist-packages/gevent/socket.py", line 427, in recv
    wait_read(sock.fileno(), timeout=self.timeout, event=self._read_event)
  File "/usr/lib/python2.7/dist-packages/gevent/socket.py", line 169, in wait_read
    switch_result = get_hub().switch() …
Run Code Online (Sandbox Code Playgroud)

python rabbitmq gevent pika

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

设置与模型名称无关的种类名称(App Engine数据存储区)

作为一名Python程序员,我喜欢我的代码是可重用的,我试图避免代码中的名称冲突(两个不同的模型共享相同类型的名称).

目前我只是将一些有意义的文本添加到模型的类名中,但这非常简单.

能够明确设置模型的类型将解决我的问题,但我不知道如何做到这一点,有谁知道如何?

python google-app-engine google-cloud-datastore

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

扩展模块

add_type在使用mimetypes模块时,我真的厌倦了一堆"缺失"的mimetypes ,我有什么办法可以做到以下几点吗?

# This file is named mimetypes.py
from mimetypes import *
add_type('application/x-rar-compressed', 'rar', False)
add_type('video/mp4', 'mp4', False)
add_type('video/x-ms-wmv', 'wmv', False)
add_type('video/x-flv', 'flv', False)
Run Code Online (Sandbox Code Playgroud)

这个问题是它试图导入自己,而不是"真正的" mimetypes模块.

我知道它是单声道和不好的练习,但我认为它不会真正破坏任何东西.

python mime-types

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

为Datastore Plus(NDB)中的事务提供参数

在使用Datastore Plus时,我无法确定如何将参数传递给事务.

有人可以重写这个常规数据存储区示例代码吗?

from google.appengine.ext import db

class Accumulator(db.Model):
    counter = db.IntegerProperty()

def increment_counter(key, amount):
    obj = db.get(key)
    obj.counter += amount
    obj.put()

q = db.GqlQuery("SELECT * FROM Accumulator")
acc = q.get()

db.run_in_transaction(increment_counter, acc.key(), 5)
Run Code Online (Sandbox Code Playgroud)

我对数据存储区加上最后一行的等价物特别感兴趣.

数据存储以及文档的示例代码不处理的所有参数(在事务内部硬编码).

python google-app-engine transactions google-cloud-datastore

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

从纯Python中获取flash文件(.swf)中的维度

如何从Flash文件中提取尺寸(宽度和高度)?

我打算在Google App Engine上托管的webapp中使用此代码,因此不具备纯Python的lib将无效.

python flash

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