{ "info": { "author": "zlyuan", "author_email": "1277260932@qq.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# \u6d88\u606f\u4e2d\u5fc3, \u907f\u514d\u4ee3\u7801\u7684\u5f3a\u8026\u5408\u6027, \u652f\u6301\u591a\u7ebf\u7a0b\n\n### zmsgcentre\u662f\u4ec0\u4e48\n> zmsgcentre\u662f\u4e00\u4e2a\u6d88\u606f\u4e2d\u5fc3, \u6574\u4e2a\u7a0b\u5e8f\u6240\u6709\u7684\u6a21\u5757\u548c\u51fd\u6570\u5f15\u7528\u90fd\u4e0d\u9700\u8981\u76f4\u63a5\u8c03\u7528\u4e86, \u800c\u662f\u901a\u8fc7\u6d88\u606f\u4e2d\u5fc3\u8fdb\u884c\u8f6c\u53d1, \u6781\u5927\u7684\u964d\u4f4e\u4ee3\u7801\u8026\u5408\u6027\n\n### \u4e3a\u4ec0\u4e48\u9700\u8981\u964d\u4f4e\u4ee3\u7801\u8026\u5408\u6027\n> \u5728\u5f00\u53d1\u5927\u578b\u7a0b\u5e8f\u7684\u65f6\u5019\u96be\u514d\u4f1a\u51fa\u73b0\u4ee3\u7801\u7684\u5f3a\u8026\u5408\u6027, \u8fd9\u662f\u4e00\u4e2a\u5371\u9669\u7684\u8bbe\u8ba1, \u5047\u8bbe\u4f60\u5728\u7ef4\u62a4\u4f60\u7684\u7a0b\u5e8f\u65f6, \u5c06\u67d0\u4e2a\u51fd\u6570\u540d\u6216\u53c2\u6570\u6539\u53d8\u4e86, \u90a3\u4e48\u6240\u6709\u8c03\u7528\u8fd9\u4e2a\u51fd\u6570\u7684\u4ee3\u7801\u90fd\u5fc5\u987b\u540c\u65f6\u66f4\u6539, \u5982\u679c\u662f\u5c11\u6570\u5219\u6539\u4ee3\u7801\u5f88\u7b80\u5355.\n+ Q: \u5982\u679c\u662f\u51e0\u5341\u4e2a\u751a\u81f3\u4e0a\u767e\u4e0a\u5343\u4e2a\u5730\u65b9\u5f15\u7528\u4e86\u8fd9\u4e2a\u51fd\u6570\u600e\u4e48\u529e?\n+ A: \u4f60\u544a\u8bc9\u6211\u4f60\u65f6\u95f4\u591a\u6ca1\u5173\u7cfb\u6162\u6162\u6539.\n+ Q: \u4e07\u4e00\u5fd8\u8bb0\u4e86\u4e00\u4e24\u5904\u6ca1\u6539\u600e\u4e48\u529e?\n+ A: ctrl+f\u5168\u5c40\u66ff\u6362\u5c31\u884c\u4e86.\n+ Q: \u5982\u679c\u4f60\u7684\u51fd\u6570\u540d\u662f\u591a\u7528\u7684\u5462, \u5982: \u51fd\u6570\u540d\u4e3a'AA', \u6216\u8005\u67d0\u4e2a\u51fd\u6570\u540d\u4e3a'AAX', \u67d0\u4e00\u5904\u5b57\u7b26\u4e32\u4e3a'AABC', \u4f60\u8fd8\u80fd\u6de1\u5b9a\u4e48?\n+ A: \u6b63\u5219\u8868\u8fbe\u5f0f\u66ff\u6362...\n+ Q: \u65b0\u7684\u51fd\u6570\u540d\u6216\u53c2\u6570\u662f\u5426\u4f1a\u548c\u5176\u4ed6\u51fd\u6570\u4ea7\u751f\u51b2\u7a81, \u4f60\u7684\u4efb\u4f55\u4e00\u5904\u4ee3\u7801\u66f4\u6539, \u9700\u82b1\u8d3910\u500d\u4ee5\u4e0a\u7684\u65f6\u95f4\u6765\u8bc4\u4f30\u6574\u4e2a\u7a0b\u5e8f\u7684\u5065\u58ee\u6027, \u66f4\u6539\u540e\u591a\u4e2a\u6a21\u5757\u4e4b\u95f4\u662f\u5426\u4f1a\u51b2\u7a81, \u51fa\u73b0\u9690\u85cfbug\u5982\u4f55\u8c03\u8bd5\n+ A: emmmmm.....\n\n### \u5982\u4f55\u4f7f\u7528zmsgcentre\n\u4f7f\u7528zmsgcentre\u4f60\u9700\u8981\u660e\u767dsender\u89d2\u8272, receiver\u89d2\u8272\u4ee5\u53camsg_tag\n+ sender\u53ef\u4ee5\u7406\u89e3\u4e3a\u4e00\u4e2a\u5e7f\u64ad\u7535\u53f0.\n+ msg_tag\u5c31\u662f\u5e7f\u64ad\u7535\u53f0\u7684\u9891\u7387\n+ receiver\u5c31\u662f\u63a5\u6536\u7535\u53f0\u6d88\u606f\u7684\u63a5\u6536\u5668\n\n### \u5b83\u6709\u4ec0\u4e48\u4f18\u70b9\n+ \u4e00\u6b21\u53d1\u9001\u5e7f\u64ad\u53ef\u4ee5\u88ab\u591a\u4e2a\u63a5\u6536\u5668\u63a5\u6536.\n+ \u7ebf\u7a0b\u5b89\u5168.\n+ \u652f\u6301\u6807\u7b7e\u7ea7\u522b\u7ebf\u7a0b\u9501.\n+ \u5141\u8bb8\u5728\u63a5\u6536\u5668\u56de\u8c03\u51fd\u6570\u4e2d\u521b\u5efa\u548c\u9500\u6bc1\u63a5\u6536\u5668, \u9500\u6bc1\u6d88\u606f\u6807\u7b7e.\n+ \u7406\u89e3\u7b80\u5355, \u65e0\u9700\u6d88\u606f\u8ba2\u9605\u7cfb\u7edf\u90a3\u4e48\u590d\u6742\u7684\u521b\u5efatopic\u548c\u6d88\u8d39\u8005\u89c2\u5ff5.\n+ \u4f7f\u7528\u65b9\u4fbf, \u53d1\u9001\u8005\u548c\u63a5\u53d7\u5668\u53ea\u9700\u8981\u4e00\u884c\u4ee3\u7801\u5b9a\u4e49, \u4e0d\u5f71\u54cd\u4ee3\u7801\u9605\u8bfb\u6027, \u8ba9\u4ee3\u7801\u903b\u8f91\u66f4\u7b80\u5355\n+ \u4ee3\u7801\u5f00\u6e90, \u7cbe\u7b80, \u6574\u4e2a\u6a21\u5757\u53ea\u67093.5kb.\n\n### \u4e00\u4e2a\u7b80\u5355\u7684\u5b9e\u4f8b\n```python\nimport zmsgcentre # \u5bfc\u5165zmsgcentre\u6a21\u5757\n\ndef receiver_func(a):\n print(a)\n\nzmsgcentre.create_receiver('test_tag', receiver_func) # \u521b\u5efa\u4e00\u4e2a\u63a5\u6536\u5668, \u63a5\u6536\u6d88\u606f\u6807\u7b7e\u4e3a'test_tag'\u7684\u5185\u5bb9\nzmsgcentre.send('test_tag', '\u5e7f\u64ad\u6570\u636e') # \u53d1\u9001\u5e7f\u64ad\u5230'test_tag'\n```\n\n### \u591a\u6a21\u5757\u5b9e\u4f8b\n+ manager.py\n\n```python\nimport zmsgcentre\n\nimport test_A\nimport test_B\n\ndef send(data):\n return zmsgcentre.send('test_tag', data) #\u53d1\u9001\u5e7f\u64ad\u5230'test_tag'\n\nif __name__ == '__main__':\n result = send('\u4e3b\u6a21\u5757\u53d1\u9001\u6765\u7684\u6d88\u606f')\n print(result) # send\u8fd4\u56de\u4e00\u4e2a\u5217\u8868, \u8fd9\u4e2a\u5217\u8868\u5305\u542b\u6240\u6709\u63a5\u6536\u5668\u7684\u8fd4\u56de\u503c(\u65e0\u5e8f), \u65e0\u63a5\u6536\u5668\u8fd4\u56de\u4e00\u4e2a\u7a7a\u5217\u8868\n```\n\n+ test_A.py\n\n```python\nimport zmsgcentre\n\ndef receiver_func_a(data):\n print(data)\n return 'test_A\u5df2\u6536\u5230'\n\nzmsgcentre.create_receiver('test_tag', receiver_func_a) # \u521b\u5efa\u63a5\u6536\u5668, \u6307\u5b9a\u6d88\u606f\u6807\u7b7e, \u7ed1\u5b9a\u56de\u8c03\u51fd\u6570\n```\n\n+ test_B.py\n\n```python\nimport zmsgcentre\n\ndef receiver_func_b(data):\n print(data)\n return 'test_B\u5df2\u6536\u5230'\n\nzmsgcentre.create_receiver('test_tag', receiver_func_b) # \u521b\u5efa\u63a5\u6536\u5668, \u6307\u5b9a\u6d88\u606f\u6807\u7b7e, \u7ed1\u5b9a\u56de\u8c03\u51fd\u6570\n```\n\n### \u4f7f\u7528\u88c5\u9970\u5668\u7b80\u5316\u4ee3\u7801\n+ manager.py\n\n```python\nimport zmsgcentre\n\nimport test_A\nimport test_B\n\n@zmsgcentre.sender('test_tag') # \u521b\u5efa\u5e7f\u64ad\u5668, \u6307\u5b9a\u5e7f\u64ad\u7684\u6d88\u606f\u6807\u7b7e, \u7ed1\u5b9a\u5e7f\u64ad\u5165\u53e3\u4e3asend\u51fd\u6570\ndef send(data):\n pass # \u65e0\u9700\u4efb\u4f55\u4ee3\u7801, \u5199\u4e86\u4e5f\u4e0d\u4f1a\u6267\u884c\u8fd9\u91cc\u7684\u4ee3\u7801, \u56e0\u4e3a\u6ca1\u5fc5\u8981.\n\nif __name__ == '__main__':\n result = send('\u4e3b\u6a21\u5757\u53d1\u9001\u6765\u7684\u6d88\u606f')\n print(result)\n```\n\n+ test_A.py\n\n```python\nimport zmsgcentre\n\n@zmsgcentre.receiver('test_tag') # \u521b\u5efa\u63a5\u6536\u5668, \u6307\u5b9a\u6d88\u606f\u6807\u7b7e, \u7ed1\u5b9a\u56de\u8c03\u51fd\u6570\ndef receiver_func_a(data):\n print(data)\n return 'test_A\u5df2\u6536\u5230'\n```\n\n+ test_B.py\n\n```python\nimport zmsgcentre\n\n@zmsgcentre.receiver('test_tag') # \u521b\u5efa\u63a5\u6536\u5668, \u6307\u5b9a\u6d88\u606f\u6807\u7b7e, \u7ed1\u5b9a\u56de\u8c03\u51fd\u6570\ndef receiver_func_b(data):\n print(data)\n return 'test_B\u5df2\u6536\u5230'\n```\n###### \u6ce8: \u5373\u4f7f\u4f7f\u7528\u4e86\u88c5\u9970\u5668\u5b9a\u4e49\u4e86\u4e00\u4e2a\u63a5\u6536\u5668, \u4ecd\u7136\u53ef\u4ee5\u4e3b\u52a8\u8c03\u7528\u5b83, \u5982\u4e0a\u53ef\u4ee5\u4e0d\u901a\u8fc7\u6d88\u606f\u4e2d\u5fc3\u76f4\u63a5\u8c03\u7528receiver_func_b\n\n### \u63a5\u6536\u5668\u4f18\u5148\u7ea7\n``` python\nimport zmsgcentre\n\n# priority\u8868\u793a\u4f18\u5148\u7ea7, \u4f60\u53ef\u4ee5\u7b80\u5355\u7406\u89e3\u4e3a\u63a5\u6536\u5668\u5230\u5e7f\u64ad\u5668\u7684\u8ddd\u79bb, \u6570\u5b57\u8d8a\u5c0f\u8d8a\u5148\u6536\u5230\u6d88\u606f, \u6570\u5b57\u76f8\u7b49\u7684\u63a5\u6536\u5668\u6536\u5230\u6d88\u606f\u987a\u5e8f\u968f\u673a\n@zmsgcentre.receiver('test_tag', priority=999)\ndef receiver_func(a):\n print(a)\n```\n\n### \u66f4\u65b0\u65e5\u5fd7\n\u53d1\u5e03\u65f6\u95f4|\u53d1\u5e03\u7248\u672c|\u53d1\u5e03\u8bf4\u660e\n--|:--:|---\n19-01-29 | 2.0.1 | \u53d1\u9001\u5668\u65b0\u589e\u4e00\u4e2a\u53c2\u6570stop_send_flag, \u5982\u679c\u6709\u4e00\u4e2a\u63a5\u6536\u5668\u8fd4\u56de\u8fd9\u4e2a\u6807\u8bb0\u5219\u505c\u6b62\u53d1\u9001(\u5185\u90e8\u4f7f\u7528is\u5224\u65ad)\u5e76\u4e14\u8fd4\u56deTrue\n19-01-10 | 2.0.0 |