你还看得见尸体旁的血吗?

你还看得见尸体旁的血吗? 看得见 在头颅旁 那你过几日再来瞧瞧吧 你还看得见尸体旁的血吗? 不是特别清晰 被昨夜的雨水冲刷了 那你过几日再瞧瞧吧 你还看得见尸体旁的血吗? 看不见了 被昨夜的雪覆盖了 那你还看得见尸体吗? 看得见 依稀还有人形 那你过几日再来瞧瞧吧 你还看得见尸体吗? 看不见了 被大雪覆盖了 最后的一点红被白雪覆盖了 像往常一样旷野一片寂静 大家似乎忘记了那里曾经死过人

出处未知

Python判断图片格式并获取MIME

获取图片mime这种问题网上一搜就是mimetypesguess(), 这种根据后缀判断文件类型的方式就有点曲线救国了,根据Ficapy介绍,unix上一般大多数的文件在开头都会有一串magic number(幻数),但不是所有文件都包含,根据幻数可以较准确判断出文件的类型 unix下允许使用后缀来标识文件类型,但实际上文件标不标后缀都是由开发者决定的

Python判断图片格式并获取MIME - 1 Continue reading Python判断图片格式并获取MIME

Python 异步任务模块 Celery 快速上手 (一)

基本使用

第一步,建立一个celery类的对象,传入一个名称(后续需要这个名称来执行异步任务), 配置消息代理,这里配置了本地redis服务器的第0个数据库

    """
    tasks.py
    """
    from celery import Celery
    celery_app = Celery('name', broker='redis://localhost:6379/0')

那这样就可以通过task装饰器来建立一个简单的异步任务了

    """
    tasks.py
    """
    import time

    @celery_app.task
    def task_name(someone):
        time.sleep(5)
        print('hello {}'.format(someone))

建立好异步任务之后,可以在外部调用这个任务

    from tasks import task_name
    # 任务用过delay方法可以传入参数,方法执行后并不会阻塞后续代码
    task_name.delay('task')
    print('start running!')
    # 也可以不立即执行,可以先用s方法传入参数
    task_name.s('task')
    print('start running!')
    task_name.delay()

对了执行celery命令celery -A name worker, 执行后注册的任务会在console里面输出

数据持久化

想要delay的函数返回的结果就需要在建立celery对象中加入一个backend参数

    """
    tasks.py
    """
    from celery import Celery
    celery_app = Celery('name', broker='redis://localhost:6379/0', backend='redis://localhost:6379/1')

建立一个任务带返回数据功能的

    """
    tasks.py
    """
    import time

    @celery_app.task
    def say_hello(to):
        time.sleep(5)
        return "Hello {}".format(to)

通过ready()方法可以获取任务是否完成,而get()可以获取任务返回结果

    from tasks import say_hello
    import time

    t = say_hello('hello')
    while True:
        r = t.ready()
        if not r:
            print("task done? {}".format(r))
            continue
        print('task done: {}'.format(t.get()))
        break

下一篇详细讲讲Celery的Task类

利用extend自定义jquery函数方法

$.ajax这种jquery方法是不是非常的简短实用,利用extend方法,你也可以给自己定义一个以$符号开头的方法

jQuery.extend( //在jQuery函数下拓展一个方法
    {"hello": function(name) { //方法命名为hello,执行需要传入一个name参数
            console.log("hello " + name)
        }
    }
)
/*
$.hello("world")
output:
hello world
*/