分类 "Server" 下的文章

问题:之前是好的,更新软件包之后就出错了
解决:是因为rq没有指定包名
方法:
目录结构:
website
jobs
job_send_email.py   # 处理发送邮件的方法
server
main.py    # 入口文件
site_base.py   # 配置文件
user_handler.py   # 处理文件

在site_base.py中已经指定jobs目录了
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__),"..",'jobs')))
所以在user_handler.py中引入 job_send_email.py 是不需要指定jobs的,否则报错
import job_send_email  # 正确
import jobs.job_send_email # 错误,python后台报错ImportError: No module named 'jobs'
但是在使用rq时需要指定jobs
正确方法:
q.enqueue("jobs.job_send_email.send_email", umail, email_subject, email_html)
错误方法:
q.enqueue("job_send_email.send_email", umail, email_subject, email_html)
这时会报错ImportError: No module named 'job_send_email'

问题:使用tornado时,上传文件不能太大,否则无法上传
解决:因为tornado限制了上传文件的大小,可以在Application.listen的setting中设置max_buffer_size
方法:
import settings
def main():
... ...
application.listen(tornado.options.options.port, **settings.server_settings)

我的入口方法是这样的,所以我需要在settings.py文件的server_settings中加上"max_buffer_size": 1048576000,

当然为了安全起见,建议使用nginx 的上传模块https://www.nginx.com/resources/wiki/modules/upload/
参考:https://stackoverflow.com/questions/19074972/content-length-too-long-when-uploading-file-using-tornado

问题:405是什么错误,404什么错误,500什么错误,304什么情况,405 Method Not Allowed
解决:了解http的一些状态情况
一、2xx  成功
200  正常;请求已完成。
201  正常;紧接 POST 命令。
202  正常;已接受用于处理,但处理尚未完成。
203  正常;部分信息 — 返回的信息只是一部分。
204  正常;无响应 — 已接收请求,但不存在要回送的信息。
二、3xx  重定向
301  已移动 — 请求的数据具有新的位置且更改是永久的。
302  已找到 — 请求的数据临时具有不同 URI。
303  请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。
304  未修改 — 未按预期修改文档。
305  使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。
306  未使用 — 不再使用;保留此代码以便将来使用。
三、4xx  客户机中出现的错误
400  错误请求 — 请求中有语法问题,或不能满足请求。
401  未授权 — 未授权客户机访问数据。
402  需要付款 — 表示计费系统已有效。
403  禁止 — 即使有授权也不需要访问。
404  找不到 — 服务器找不到给定的资源;文档不存在。
405 - 资源被禁止
406 - 无法接收
407  代理认证请求 — 客户机首先必须使用代理认证自身。
410 - 永远不可用
412 - 先决条件失败
414 - 请求 - URI 太长
415  介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。
四、5xx  服务器中出现的错误
500  内部错误 — 因为意外情况,服务器不能完成请求。
501  未执行 — 服务器不支持请求的工具。
502  错误网关 — 服务器接收到来自上游服务器的无效响应。
503  无法获得服务 — 由于临时过载或维护,服务器无法处理请求。