V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bwangel  ›  全部回复第 9 页 / 共 32 页
回复总数  637
1 ... 5  6  7  8  9  10  11  12  13  14 ... 32  
2020-05-15 10:09:39 +08:00
回复了 chaleaoch 创建的主题 Python Python 语法,这是哪条规则允许这样做的?
https://docs.python-guide.org/writing/style/#line-continuations

Python Guide 这个文档真的挺好的,值得一读。
2020-05-11 22:41:41 +08:00
回复了 lttzzlll 创建的主题 Python uwsgi 到底是个啥东西
搜一下 “uwsgi 源码分析”,有挺多讲 uwsgi 实现的文章的。
2020-05-11 22:40:02 +08:00
回复了 lttzzlll 创建的主题 Python uwsgi 到底是个啥东西
Python 有个东西叫做 C-API,https://docs.python.org/3/c-api/index.html,让开发者可以用 C 代码来访问 Python 解释器内部,这样就可以用 C 来获取 Python 中的对象,执行 Python 中定义的函数函数等。


1. uwsgi 中并没有集成一个 Python 虚拟机,它只是调用了 Python 提供的 C 接口,启动后在内存中创建了 Python 虚拟机实例。

# 初始化 Python 实例的位置

https://github.com/unbit/uwsgi/blob/11ca00432176f4246881870ea6c7c4ea5a26481f/plugins/python/python_plugin.c#L302

分析 uwsgi 依赖的动态库,可以看到它是依赖 Python 的。

ø> otool -L `which uwsgi` 22:29:40 (05-11)
/usr/local/bin/uwsgi:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.50.2)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
/usr/local/opt/pcre/lib/libpcre.1.dylib (compatibility version 4.0.0, current version 4.8.0)
/usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0)
/usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 57.1.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0)
/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/Python (compatibility version 3.6.0, current version 3.6.0)


2. uwsgi 启动后会将 wsgi App 对象(例如 flask 的 app 对象)加载到内存中。然后每次请求到来后,调用 wsgi App 对象来处理请求。

# 加载 wsgi app 对象的位置

https://github.com/unbit/uwsgi/blob/58c920bf96b86450f88d02a1df9043e754550483/plugins/python/pyloader.c#L194
@oahebky

感觉你这个状态切换的模型没必要用库,因为状态变更的逻辑你始终都是要写的,可以直接手撸一个。

如果是 HTTP 请求触发的话,需要考虑一下并发问题,一个状态正在执行切换过程中,又有一个 HTTP 请求进来了。

所以,建议

当 HTTP 请求进来后,不立刻执行状态切换的操作,而是将它包装成一个事件,放到一个队列中,另外再起一个 Worker (可以用多个 Worker,根据你的实际情况确定,不会发生冲突即可),执行状态切换的操作。这样状态切换操作的执行时间过长,也不会有什么问题.


事件+队列可以直接使用 RabbitMQ + Celery (千万别用 Redis+Celery,不成熟,有 bug)。如果觉得这两个太重,而业务量又不是太大的话,可以用 MySQL 自己写一个队列。
https://github.com/jek/blinker

blinker 可以用来定义事件。不过这个都是同步的。

可以再描述一下详细需求么?内部状态切换是否是耗时较长任务,如果耗时较长,需要上队列。
2020-04-26 13:28:05 +08:00
回复了 fumeboy 创建的主题 Go 编程语言 一个导出包内符号的合适的方法,用于 golang 工程
2020-04-22 17:29:56 +08:00
回复了 0gys 创建的主题 分享发现 主流套路贷逾期后果分享
https://zhuanlan.zhihu.com/p/57781046

老哥,你这个操作可以认为是低级版的 场外配资 ,场外配资是国家严厉打击的行为。

http://www.xinhuanet.com/fortune/2019-04/18/c_1210111987.htm

所以,借钱炒股,还真是走上了歪路。
2020-04-21 20:56:20 +08:00
回复了 davidyanxw 创建的主题 Go 编程语言 协程执行问题请教
time.Sleep 不能保证 goroutine 一定比 main 先执行,如果想要让 Goroutine 比 main 先执行的话,可以通过 waitGroup 来同步:

https://gist.github.com/bwangelme/5e71895d40130521b71828cef72adc1f
2020-04-10 17:19:32 +08:00
回复了 Ace2003 创建的主题 分享创造 送给喜欢的女孩的个人网站
https://www.douban.com/doubanapp/dispatch?uri=/group/topic/170558638

以前我也觉得这种礼物是程序员的自嗨,后来发现还是有妹子喜欢这种礼物的
2020-04-10 10:15:12 +08:00
回复了 yuang 创建的主题 职场话题 分享一次奇葩面试经历
真心劝告未工作的年轻人,千万不要学楼主,这样的态度是很大很大的减分项,看见算法题就绕着走,也是很大很大的减分项。
2020-04-10 10:08:26 +08:00
回复了 yuang 创建的主题 职场话题 分享一次奇葩面试经历
如果面试官问的问题都是能够轻松回答的简单问题,那是面试官的失职。面试官应该通过面试考察出候选人的上限。

分别面试了两个人,都问一些简单问题,然后不知道谁的技术水平更高,学习能力更强,这样的面试是有问题的。

问一些算法题,不是要求候选人必须答上来,而是观察候选人在遇到无法解决的问题的时候,会采取什么样的努力措施。

解决问题是一种能力
努力解决问题也是一种能力
解决不了问题,向相关人及时反馈,也是一种能力
2020-04-08 10:57:26 +08:00
回复了 littleb 创建的主题 职场话题 刚做完核酸和抗体检测,在武汉也要复工了
啊,楼主加油。
2020-04-02 14:48:44 +08:00
回复了 sakura1 创建的主题 Python Python 如何打包依赖模块到服务器,类似 mvn 的 package+assemble
另外,如果你的项目不复杂的话,还有一个建议就是用 Go 重写。

在交叉编译好了以后,直接把可执行文件扔到公司服务器上运行,不需要任何的依赖。
2020-04-02 14:45:16 +08:00
回复了 sakura1 创建的主题 Python Python 如何打包依赖模块到服务器,类似 mvn 的 package+assemble
https://github.com/Parsely/pykafka/blob/master/pykafka/rdkafka/_rd_kafkamodule.c

1. pykafka 中是有 C 代码的,你在 Mac 上创建的 venv 放到 Linux 上是不能使用的,必须本地也在 Linux 中构建。
2. pykafka 依赖一个 C 库,https://github.com/edenhill/librdkafka,所以你先要在 公司服务器上装好这个库。

所以 Docker 真是最简单的办法了。
2020-04-02 14:32:41 +08:00
回复了 sakura1 创建的主题 Python Python 如何打包依赖模块到服务器,类似 mvn 的 package+assemble
用 Docker 。

ø> docker help export

Usage: docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

Options:
-o, --output string Write to a file, instead of STDOUT

ø> docker help import

Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Import the contents from a tarball to create a filesystem image

Options:
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Set commit message for imported image
--platform string Set platform if server is multi-platform capable
1 ... 5  6  7  8  9  10  11  12  13  14 ... 32  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5057 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 08:58 · PVG 16:58 · LAX 00:58 · JFK 03:58
♥ Do have faith in what you're doing.