#284 Python 定时任务的简单部署

2018-12-20

部署

# curl: (35) SSL connect error
# StackOverflow: You are using a very old version of curl.
# yum upgrade curl

# 安装 pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

# 环境变量
PYENV_ROOT="$HOME/.pyenv"
PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

# 可用版本列表
pyenv install -l
# 使用国内 Python 镜像,相当于给 pyenv 加速
wget https://mirrors.sohu.com/python/3.6.7/Python-3.6.7.tar.xz -P ~/.pyenv/cache/
# 安装(优先使用缓存目录中的文件,会检查缓存校验码是否正确)
pyenv install 3.6.7

运行方式

假定:

  • 项目路径:/path/to/project/
  • 定时任务命令:python main.py

crontab 配置

早上 01:15 执行某某定时任务:

15 1 * * * /bin/bash /path/to/project/cron.sh

脚本 cron.sh

pyenv + pip 模式

#!/bin/bash

# 环境变量
PYENV_ROOT="$HOME/.pyenv"
PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

cd /path/to/project/

# 创建并激活虚拟环境,安装依赖
# $PYENV_ROOT/versions/3.6.7/envs/tasks/
pyenv virtualenv 3.6.7 tasks

if [ $? -ne 0 ]; then
    pyenv activate tasks
    pip install -r requirements.txt
else
    pyenv activate tasks
fi

# 运行脚本
python main.py

pyenv + pipenv 模式

#!/bin/bash

# 环境变量
PYENV_ROOT="$HOME/.pyenv"
PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

cd /path/to/project/

# 选择 Python 版本
pyenv local 3.6.7

pip show pipenv > /dev/null

if [ $? -ne 0 ]; then
    # 安装 pipenv
    pip install pipenv
    # 创建虚拟环境,安装依赖
    pipenv install
fi

# 运行脚本
pipenv run python main.py

#279 VirtualBox 虚拟机磁盘扩容

2018-12-13

之前只有一个 50G 存储,后来磁盘空间总不够,就把占空间比较大的 Projects 目录(用户主目录下)移出来,弄了一个独立的 50G 盘。
过了段时间,又隔三差五提醒我空间不够了,baobab 清理了,可以删除的东西一删,多出几 GB 来。
但是看结果,还是扩容一下,一了百了。

#276 几个小脚本

2018-12-05

随便翻一下谷歌浏览器调试工具(F12)执行过的脚本,摘几个贴一下。
1. Gitee GVP
2. API 测试时先调登录接口
3. heidiSQL 找回数据库密码
4. 列出 Python 文档中的章节
5. 自动删除网易邮箱的邮件

#275 OneTab 快速删除所有 URL 的方法

2018-12-05
function confirm() { return true; } // 覆盖 confirm 方法,一直返回确认
nodelist = document.querySelectorAll('#contentAreaDiv > div > div:nth-child(1) > div > div:nth-child(5) > div:nth-child(3)');
nodelist.forEach(function(ele, index, list) { setTimeout(function() { ele.click(); }, 1000 * index); });